💡Tips
- 自动管理多广告位并行加载、缓存与比价展示,开发者只需
load→isReady→show- 调用
load()前必须确保MCSDK.init()已完成,否则加载会静默失败- 广告关闭后 SDK 自动补量,无需手动重新加载;
isReady()返回 false 时也会自动触发后台补量- 开屏广告包含
onAdLoadTimeout超时回调,建议结合业务场景合理处理超时逻辑show()需传入ViewGroup容器,用于承载开屏广告视图
// 1. 设置回调
MCSplashAdManager.getInstance().setListener(new MCSplashAdManagerListener() {
@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) {
// 广告关闭,建议在此回调中移除容器内的视图
if (container != null) {
container.removeAllViews();
}
}
@Override
public void onAdClicked(MCAdInfo adInfo) {
// 广告点击
}
@Override
public void onAdDisplayFailed(MCAdInfo adInfo, MCError error) {
// 展示失败
}
@Override
public void onAdRevenuePaid(MCAdInfo adInfo) {
// 广告收益回调(用于收益归因)
}
// --- 开屏特有回调 ---
@Override
public void onAdLoadTimeout() {
// 加载超时,可在此进入应用主页面
}
});
// 2. 加载(SDK 根据服务端配置自动管理多广告位)
MCSplashAdManager.getInstance().load();
⚠️ 注意
setListener()建议在load()之前调用,否则可能丢失首次加载回调load()调用后进入加载状态,加载未完成前重复调用会被自动忽略,无需手动防重复onAdLoadTimeout在加载超时时触发,建议在此回调中跳转到应用主页面,避免用户长时间等待
// container 为显示开屏广告的父容器(ViewGroup)
if (MCSplashAdManager.getInstance().isReady()) {
MCSplashAdManager.getInstance().show(activity, container);
}
💡 说明
- 开屏广告需传入
ViewGroup类型的容器参数,用于承载广告视图show()内部自动选择缓存池中 eCPM 最高的广告展示,无需手动比价- 展示后该广告位缓存被消耗,SDK 自动发起补量
isReady()返回false时,SDK 会自动触发后台补量,可定期轮询检查就绪状态
MCSplashAdManager.getInstance().destroy();
⚠️ 注意
- 销毁后需重新调用
load()才能继续使用destroy()重复调用是安全的- 建议在
onAdHidden回调中同步清理容器视图(container.removeAllViews())
Map<String, Object> loadExtraParameter = new HashMap<>();
loadExtraParameter.put("key", "value");
MCSplashAdManager.getInstance().setLoadExtraParameter(loadExtraParameter);
Map<String, String> extraParameter = new HashMap<>();
extraParameter.put("key", "value");
MCSplashAdManager.getInstance().setExtraParameter(extraParameter);
// 自定义参数需在 load() 前设置
MCSplashAdManager.getInstance().load();