💡Tips
- Smart Cache 自动管理多广告位并行加载与缓存比价,无需手动管理多个
MCInterstitialAd实例MCInterstitialAdManager为普通实例类,建议作为属性长期持有- 展示后 SDK 自动补量,关闭广告后再次
isReady→showAd即可循环使用
#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 { }
if ([self.interstitialManager isReady]) {
// viewController 建议传入当前顶层 VC;可为 nil 时由 SDK 按内部策略处理
[self.interstitialManager showAdWithViewController:self];
}
如需传入场景 ID 等扩展参数:
if ([self.interstitialManager isReady]) {
[self.interstitialManager showAdWithViewController:self
withExtra:@{kMCAPIPlacementScenarioIDKey: @"场景id"}];
}
[self.interstitialManager destroyAd];
页面或模块销毁时应调用
destroyAd释放缓存池资源,避免内存泄漏。释放后需重新loadAd才能继续使用。
- (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];
}