💡Tips
- 自动管理多广告位并行加载、缓存与比价展示,开发者只需
load→isReady→show- 调用
load()前必须确保MCSDK.init()已完成,否则加载会静默失败- 广告关闭后 SDK 自动补量,无需手动重新加载;
isReady()返回 false 时也会自动触发后台补量
// 1. 设置回调
MCRewardAdManager.getInstance().setListener(new MCRewardAdManagerListener() {
@Override
public void onAdLoaded(MCAdInfo adInfo) {
// 至少一个广告就绪(一轮加载最多触发 1 次)
}
@Override
public void onAdLoadFailed(MCError error) {
// 所有广告位均加载失败(与 onAdLoaded 互斥)
}
@Override
public void onAdLoadFinished() {
// 本轮所有广告位加载结束(无论成功失败均会触发)
}
@Override
public void onAdDisplayed(MCAdInfo adInfo) {
// 广告展示成功
}
@Override
public void onAdHidden(MCAdInfo adInfo) {
// 广告关闭(SDK 自动补量,无需手动 load)
}
@Override
public void onAdClicked(MCAdInfo adInfo) {
// 广告点击
}
@Override
public void onAdDisplayFailed(MCAdInfo adInfo, MCError error) {
// 展示失败
}
@Override
public void onAdRevenuePaid(MCAdInfo adInfo) {
// 广告收益回调(用于收益归因)
}
// --- 激励视频特有回调 ---
@Override
public void onUserRewarded(MCAdInfo adInfo, MCReward reward) {
// 用户完成激励,在此发放奖励
}
@Override
public void onUserRewardFailed(MCAdInfo adInfo) {
// 激励发放失败
}
@Override
public void onRewardedVideoStarted(MCAdInfo adInfo) {
// 视频开始播放
}
@Override
public void onRewardedVideoCompleted(MCAdInfo adInfo) {
// 视频播放完成
}
});
// 2. 加载(SDK 根据服务端配置自动管理多广告位)
MCRewardAdManager.getInstance().load();
⚠️ 注意
setListener()建议在load()之前调用,否则可能丢失首次加载回调load()调用后进入加载状态,加载未完成前重复调用会被自动忽略,无需手动防重复onUserRewarded是发放奖励的唯一可靠时机,请勿在其他回调中发放
if (MCRewardAdManager.getInstance().isReady()) {
MCRewardAdManager.getInstance().show(activity);
}
💡 说明
show()内部自动选择缓存池中 eCPM 最高的广告展示,无需手动比价- 展示后该广告位缓存被消耗,SDK 自动发起补量
isReady()返回false时,SDK 会自动触发后台补量,可定期轮询检查就绪状态
MCRewardAdManager.getInstance().destroy();
⚠️ 注意
- 销毁后需重新调用
load()才能继续使用destroy()重复调用是安全的
Map<String, Object> loadExtraParameter = new HashMap<>();
loadExtraParameter.put(MCAdConst.KEY.USER_ID, "test_userid_001");
loadExtraParameter.put(MCAdConst.KEY.USER_CUSTOM_DATA, "test_userdata_001");
MCRewardAdManager.getInstance().setLoadExtraParameter(loadExtraParameter);
Map<String, String> extraParameter = new HashMap<>();
extraParameter.put("key", "value");
MCRewardAdManager.getInstance().setExtraParameter(extraParameter);
// 自定义参数需在 load() 前设置
MCRewardAdManager.getInstance().load();
💡 说明
激励视频支持通过
MCAdConst.KEY.USER_ID和MCAdConst.KEY.USER_CUSTOM_DATA传递用户标识与自定义数据,用于服务端激励验证。