请输入
菜单

插屏广告

💡Tips

  • Smart Cache 自动管理多广告位并行加载与缓存比价,无需手动管理多个 MCInterstitialAd 实例
  • MCInterstitialAdManager 为普通实例类,建议作为属性长期持有
  • 展示后 SDK 自动补量,关闭广告后再次 isReadyshowAd 即可循环使用

1. 加载广告

objective-c 复制代码
#import <MCSDK/MCSDK.h>

@interface SmartCacheInterstitialVC () <MCSmartCacheDelegate>

@property (nonatomic, strong) MCInterstitialAdManager *interstitialManager;

@end

@implementation SmartCacheInterstitialVC

#pragma mark - Load Ad
- (void)loadAd {
    if (!self.interstitialManager) {
        self.interstitialManager = [[MCInterstitialAdManager alloc] init];
    }
    // 建议在首次 loadAd 前设置代理
    self.interstitialManager.delegate = self;
    [self.interstitialManager loadAd];
}

#pragma mark - MCSmartCacheDelegate
// 缓存池中至少一条广告就绪
- (void)smartCacheDidLoadAd:(MCAdInfo *)ad {

}

// 首轮所有广告位均加载失败(与 smartCacheDidLoadAd: 互斥)
- (void)smartCacheDidFailToLoadAdWithError:(MCError *)error {

}

// 本轮加载流程结束
- (void)smartCacheDidAdLoadFinished {

}

// 广告展示成功
- (void)smartCacheDidDisplayAd:(MCAdInfo *)ad {

}

// 广告关闭,SDK 自动补量
- (void)smartCacheDidHideAd:(MCAdInfo *)ad {

}

// 广告点击
- (void)smartCacheDidClickAd:(MCAdInfo *)ad {

}

// 广告展示失败
- (void)smartCacheDidFailToDisplayAd:(MCAdInfo *)ad withError:(MCError *)error {

}

// 收益回调
- (void)smartCacheDidPayRevenueForAd:(MCAdInfo *)ad {

}

// 以下为激励视频专属回调,插屏场景下不会触发,实现中留空即可
- (void)smartCacheDidRewardUserForAd:(MCAdInfo *)ad withReward:(MCReward *)reward { }
- (void)smartCacheDidAdVideoStarted:(MCAdInfo *)ad { }
- (void)smartCacheDidAdVideoCompleted:(MCAdInfo *)ad { }

2. 展示广告

objective-c 复制代码
if ([self.interstitialManager isReady]) {
    // viewController 建议传入当前顶层 VC;可为 nil 时由 SDK 按内部策略处理
    [self.interstitialManager showAdWithViewController:self];
}

如需传入场景 ID 等扩展参数:

objective-c 复制代码
if ([self.interstitialManager isReady]) {
    [self.interstitialManager showAdWithViewController:self
                                             withExtra:@{kMCAPIPlacementScenarioIDKey: @"场景id"}];
}

3. 释放资源

objective-c 复制代码
[self.interstitialManager destroyAd];

页面或模块销毁时应调用 destroyAd 释放缓存池资源,避免内存泄漏。释放后需重新 loadAd 才能继续使用。


4. 设置自定义参数

objective-c 复制代码
- (void)loadAd {
    if (!self.interstitialManager) {
        self.interstitialManager = [[MCInterstitialAdManager alloc] init];
    }
    self.interstitialManager.delegate = self;

    // 设置加载时的额外参数,loadAd 前调用
    [self.interstitialManager setLoadExtraParameter:@{
        @"userData": @"test_userData"
    }];

    // 设置聚合扩展参数,loadAd 前调用
    [self.interstitialManager setExtraParameter:@{
        @"test_extra_key": @"test_extra_value"
    }];

    [self.interstitialManager loadAd];
}
上一个
开屏广告
下一个
激励视频广告
最近修改: 2026-04-03Powered by