💡Tips
- 自动管理多广告位并行加载、缓存与比价展示,开发者只需
SmartLoad→SmartIsReady→SmartShow- 调用
SmartLoadAppOpenAd()前必须确保McSdk.InitializeSdk()已完成,否则调用会被忽略- 广告关闭后 SDK 自动补量,无需手动重新加载
fetchTimeout聚合单元加载超时的时间,毫秒值(v4.1.10+ 生效,低版本自动忽略)
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完全隔离,两套回调可同时注册、互不影响。
if (McSdk.SmartIsAppOpenAdReady()) {
// SDK 自动选择缓存池中 eCPM 最高的广告展示
McSdk.SmartShowAppOpenAd();
}
📌
SmartIsAppOpenAdReady()返回false时,SDK 会自动触发后台补量,开发者无需额外操作。📌 广告展示后 SDK 自动补量,缓存池中始终保持可用广告。
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);