请输入
菜单

激励视频广告

💡Tips

  • 自动管理多广告位并行加载、缓存与比价展示,开发者只需 SmartLoadSmartIsReadySmartShow
  • 调用 SmartLoadRewardedAd() 前必须确保 McSdk.InitializeSdk() 已完成,否则调用会被忽略
  • 广告关闭后 SDK 自动补量,无需手动重新加载
  • OnDidRewardUserForAd 是发放奖励的唯一可靠时机,务必在此回调中处理奖励逻辑
  • Smart Cache 拥有独立的回调通道 McSdkCallbacks.SmartCache.Rewarded,与标准广告位回调 McSdkCallbacks.Rewarded 完全隔离

1. 加载广告

csharp 复制代码
public void InitializeSmartRewardedAd()
{
    McSdkCallbacks.SmartCache.Rewarded.OnDidLoadAd += OnSmartRewardedAdLoaded;
    McSdkCallbacks.SmartCache.Rewarded.OnDidFailToLoadAd += OnSmartRewardedAdLoadFailed;
    McSdkCallbacks.SmartCache.Rewarded.OnDidDisplayAd += OnSmartRewardedAdDisplayed;
    McSdkCallbacks.SmartCache.Rewarded.OnDidHideAd += OnSmartRewardedAdHidden;
    McSdkCallbacks.SmartCache.Rewarded.OnDidClickAd += OnSmartRewardedAdClicked;
    McSdkCallbacks.SmartCache.Rewarded.OnDidFailToDisplayAd += OnSmartRewardedAdDisplayFailed;
    McSdkCallbacks.SmartCache.Rewarded.OnDidPayRevenueForAd += OnSmartRewardedAdRevenuePaid;
    McSdkCallbacks.SmartCache.Rewarded.OnDidAdLoadFinished += OnSmartRewardedAdLoadFinished;
    // 激励视频特有回调
    McSdkCallbacks.SmartCache.Rewarded.OnDidRewardUserForAd += OnSmartRewardedAdUserRewarded;
    McSdkCallbacks.SmartCache.Rewarded.OnDidAdVideoStarted += OnSmartRewardedAdVideoStarted;
    McSdkCallbacks.SmartCache.Rewarded.OnDidAdVideoCompleted += OnSmartRewardedAdVideoCompleted;

    // 无需传入 adUnitId,由服务端策略统一管理
    McSdk.SmartLoadRewardedAd();
}

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

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

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

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

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

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

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

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

private void OnSmartRewardedAdUserRewarded(string adUnitId, McSdkBase.Reward reward, McSdkBase.AdInfo adInfo)
{
    // 激励视频特有:用户完成激励,发放奖励
    // ⚠️ 这是发放奖励的唯一可靠时机
    Debug.Log("奖励类型: " + reward.Label + " x " + reward.Amount);
}

private void OnSmartRewardedAdVideoStarted(string adUnitId, McSdkBase.AdInfo adInfo)
{
    // 激励视频特有:视频开始播放
}

private void OnSmartRewardedAdVideoCompleted(string adUnitId, McSdkBase.AdInfo adInfo)
{
    // 激励视频特有:视频播放完成
}

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

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

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


2. 展示广告

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

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

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


3. 设置自定义参数

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

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

上一个
插屏广告
下一个
Open API接入指南
最近修改: 2026-04-03Powered by