菜单

插屏广告

💡Tips

  • 调用广告 API 前,请确保 McSdk.initialize() 已完成初始化,否则调用将被忽略
  • 建议在应用启动时尽早设置 Listener 并加载广告,以确保在需要展示时广告已准备就绪
  • 加载失败时 SDK 内置指数退避重试逻辑,避免频繁请求导致填充率下降

1. 加载广告

dart 复制代码
const String _adUnitId = "your mediation unit id";
int _retryAttempt = 0;

void initInterstitialAd() {
  McSdk.setInterstitialListener(McInterstitialListener(
    onAdLoadedCallback: (McAd ad) {
      // 广告加载成功,重置重试计数
      _retryAttempt = 0;
    },
    onAdLoadFailedCallback: (String adUnitId, McError error) {
      // 广告加载失败,使用指数退避策略重试
      _retryAttempt++;
      if (_retryAttempt >= 3) {
        return;
      }
      final delaySeconds = pow(2, min(3, _retryAttempt)).toInt();
      Future.delayed(Duration(seconds: delaySeconds), () {
        McSdk.loadInterstitial(_adUnitId);
      });
    },
    onAdDisplayedCallback: (McAd ad) {
      // 广告展示成功,预加载下一条广告
      McSdk.loadInterstitial(_adUnitId);
    },
    onAdDisplayFailedCallback: (McAd ad, McError error) {
      // 广告展示失败,重新加载
      McSdk.loadInterstitial(_adUnitId);
    },
    onAdClickedCallback: (McAd ad) {
      // 用户点击了广告
    },
    onAdHiddenCallback: (McAd ad) {
      // 广告关闭,预加载下一条广告
      McSdk.loadInterstitial(_adUnitId);
    },
    onAdRevenuePaidCallback: (McAd ad) {
      // 广告收益回调
    },
    onAdLoadFinishedCallback: (String adUnitId) {
      // 当前加载轮次结束(无论成功或失败均会触发)
    },
  ));

  // 发起加载请求
  McSdk.loadInterstitial(_adUnitId);
}

2. 展示广告

dart 复制代码
Future<void> showInterstitialAd() async {
  final isReady = await McSdk.isInterstitialReady(_adUnitId);
  if (isReady == true) {
    McSdk.showInterstitial(_adUnitId);
  } else {
    McSdk.loadInterstitial(_adUnitId);
  }
}

3. 设置自定义参数

dart 复制代码
// 设置额外参数,只用于 Max
McSdk.setInterstitialExtraParameter(_adUnitId, "key", "value");

// 设置额外参数
McSdk.setInterstitialLocalExtraParameter(_adUnitId, "key", value);

// 参数需在 loadInterstitial() 之前设置,对后续所有加载请求生效

上一个
手动加载模式
下一个
激励视频广告
最近修改: 2026-06-25Powered by