请输入
菜单

开屏广告

💡Tips

  • 自动管理多广告位并行加载、缓存与比价展示,开发者只需 SmartLoadSmartIsReadySmartShow
  • 调用 SmartLoadAppOpenAd() 前必须确保 McSdk.InitializeSdk() 已完成,否则调用会被忽略
  • 广告关闭后 SDK 自动补量,无需手动重新加载
  • fetchTimeout 聚合单元加载超时的时间,毫秒值(v4.1.10+ 生效,低版本自动忽略)

1. 加载广告

csharp 复制代码
public void InitializeSmartAppOpenAd()
{
    McSdkCallbacks.SmartCache.AppOpen.OnDidLoadAd += OnSmartAppOpenAdLoaded;
    McSdkCallbacks.SmartCache.AppOpen.OnDidFailToLoadAd += OnSmartAppOpenAdLoadFailed;
    McSdkCallbacks.SmartCache.AppOpen.OnDidDisplayAd += OnSmartAppOpenAdDisplayed;
    McSdkCallbacks.SmartCache.AppOpen.OnDidHideAd += OnSmartAppOpenAdHidden;
    McSdkCallbacks.SmartCache.AppOpen.OnDidClickAd += OnSmartAppOpenAdClicked;
    McSdkCallbacks.SmartCache.AppOpen.OnDidFailToDisplayAd += OnSmartAppOpenAdDisplayFailed;
    McSdkCallbacks.SmartCache.AppOpen.OnDidPayRevenueForAd += OnSmartAppOpenAdRevenuePaid;
    McSdkCallbacks.SmartCache.AppOpen.OnDidAdLoadFinished += OnSmartAppOpenAdLoadFinished;
    // 开屏广告特有回调
    McSdkCallbacks.SmartCache.AppOpen.OnDidAdLoadTimeout += OnSmartAppOpenAdLoadTimeout;

    // 无需传入 adUnitId,由服务端策略统一管理
    // fetchTimeout 单位毫秒,v4.1.10+ 生效,低版本自动忽略
    McSdk.SmartLoadAppOpenAd(15 * 1000);
}

private void OnSmartAppOpenAdLoaded(string adUnitId, McSdkBase.AdInfo adInfo)
{
    // 至少一个广告就绪
}

private void OnSmartAppOpenAdLoadFailed(McSdkBase.ErrorInfo errorInfo)
{
    // 所有广告位均加载失败
    // SDK 自动重试,无需手动重新加载
}

private void OnSmartAppOpenAdDisplayed(string adUnitId, McSdkBase.AdInfo adInfo)
{
    // 展示成功回调
}

private void OnSmartAppOpenAdHidden(string adUnitId, McSdkBase.AdInfo adInfo)
{
    // 广告关闭回调
    // SDK 自动补量,无需手动操作
}

private void OnSmartAppOpenAdClicked(string adUnitId, McSdkBase.AdInfo adInfo)
{
    // 点击回调
}

private void OnSmartAppOpenAdDisplayFailed(McSdkBase.ErrorInfo errorInfo, McSdkBase.AdInfo adInfo)
{
    // 展示失败回调
    // SDK 自动处理,无需手动重新加载
}

private void OnSmartAppOpenAdRevenuePaid(string adUnitId, McSdkBase.AdInfo adInfo)
{
    // 收益回调
}

private void OnSmartAppOpenAdLoadFinished()
{
    // 本轮所有广告位加载结束回调(不论成功失败均触发)
    // 与 OnDidLoadAd / OnDidFailToLoadAd 的区别:
    // OnDidLoadAd — 至少一个广告位加载成功时触发
    // OnDidFailToLoadAd — 所有广告位均加载失败时触发
    // OnDidAdLoadFinished — 本轮加载流程结束时始终触发
}

private void OnSmartAppOpenAdLoadTimeout()
{
    // 开屏广告特有:加载超时回调(fetchTimeout 到期)
}

⚠️ 注意:智能缓存模式下,OnDidFailToLoadAd / OnDidFailToDisplayAd / OnDidHideAd 回调中不需要手动调用 SmartLoadAppOpenAd() 重新加载,SDK 内部自动管理补量和重试

📌 加载期间重复调用 SmartLoadAppOpenAd() 会被自动忽略,无需开发者手动处理防重复逻辑。

📌 Smart Cache 回调 McSdkCallbacks.SmartCache.AppOpen 与标准广告位回调 McSdkCallbacks.AppOpen 完全隔离,两套回调可同时注册、互不影响。


2. 展示广告

csharp 复制代码
if (McSdk.SmartIsAppOpenAdReady()) {
    // SDK 自动选择缓存池中 eCPM 最高的广告展示
    McSdk.SmartShowAppOpenAd();
}

📌 SmartIsAppOpenAdReady() 返回 false 时,SDK 会自动触发后台补量,开发者无需额外操作。

📌 广告展示后 SDK 自动补量,缓存池中始终保持可用广告。


3. 设置自定义参数

csharp 复制代码
McSdk.SmartSetAppOpenAdExtraParameter("key", "value");
#if UNITY_ANDROID
    McSdk.SmartSetAppOpenAdLocalExtraParameter("key", new AndroidJavaObject("java.lang.String", "value"));
#elif UNITY_IOS
    McSdk.SmartSetAppOpenAdLocalExtraParameter("key", "value");
#endif

// 须在 SmartLoadAppOpenAd() 前设置,参数设置后对后续所有加载请求生效
McSdk.SmartLoadAppOpenAd(15 * 1000);

上一个
智能缓存
下一个
插屏广告
最近修改: 2026-04-03Powered by