💡Tips
- 自动管理多广告位并行加载与缓存比价,无需手动管理多个
MCAppOpenAd实例MCAppOpenAdManager为普通实例类,建议作为属性长期持有;展示时需指定UIWindow与UIViewController- 可通过
setAppOpenContainerView:设置容器视图,通过setLoadAdTimeout:设置加载超时
#import <MCSDK/MCSDK.h>
@interface SmartCacheAppOpenVC () <MCSmartCacheDelegate>
@property (nonatomic, strong) MCAppOpenAdManager *appOpenManager;
@end
@implementation SmartCacheAppOpenVC
#pragma mark - Load Ad
- (void)loadAd {
if (!self.appOpenManager) {
self.appOpenManager = [[MCAppOpenAdManager alloc] init];
}
// 建议在首次 loadAd 前设置代理
self.appOpenManager.delegate = self;
// (可选)设置容器视图
// [self.appOpenManager setAppOpenContainerView:containerView];
// (可选)设置加载超时时间(单位秒,建议 5-10 秒)
// [self.appOpenManager setLoadAdTimeout:5.0];
[self.appOpenManager 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.appOpenManager isReady]) {
// window 可为 nil 时使用 key window;viewController 可为 nil 时使用顶层 VC
[self.appOpenManager showAdWithWindow:nil viewController:self];
}
如需传入场景 ID 等扩展参数:
if ([self.appOpenManager isReady]) {
[self.appOpenManager showAdWithWindow:nil
viewController:self
withExtra:@{kMCAPIPlacementScenarioIDKey: @"场景id"}];
}
[self.appOpenManager destroyAd];
页面或模块销毁时应调用
destroyAd释放缓存池资源,避免内存泄漏。释放后需重新loadAd才能继续使用。
- (void)loadAd {
if (!self.appOpenManager) {
self.appOpenManager = [[MCAppOpenAdManager alloc] init];
}
self.appOpenManager.delegate = self;
// (可选)设置容器视图
// [self.appOpenManager setAppOpenContainerView:containerView];
// (可选)设置加载超时时间(单位秒)
// [self.appOpenManager setLoadAdTimeout:5.0];
// 设置加载时的额外参数,loadAd 前调用
[self.appOpenManager setLoadExtraParameter:@{
@"userData": @"test_userData"
}];
// 设置聚合扩展参数,loadAd 前调用
[self.appOpenManager setExtraParameter:@{
@"test_extra_key": @"test_extra_value"
}];
[self.appOpenManager loadAd];
}
| 方法 | 说明 |
|---|---|
setAppOpenContainerView: |
设置开屏广告容器视图 |
setLoadAdTimeout: |
设置加载超时时间(NSTimeInterval,单位秒,建议 5-10 秒) |