请输入
菜单

开屏广告

💡Tips

  • 自动管理多广告位并行加载与缓存比价,无需手动管理多个 MCAppOpenAd 实例
  • MCAppOpenAdManager 为普通实例类,建议作为属性长期持有;展示时需指定 UIWindowUIViewController
  • 可通过 setAppOpenContainerView: 设置容器视图,通过 setLoadAdTimeout: 设置加载超时

1. 加载广告

objective-c 复制代码
#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 { }

2. 展示广告

objective-c 复制代码
if ([self.appOpenManager isReady]) {
    // window 可为 nil 时使用 key window;viewController 可为 nil 时使用顶层 VC
    [self.appOpenManager showAdWithWindow:nil viewController:self];
}

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

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

3. 释放资源

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

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


4. 设置自定义参数

objective-c 复制代码
- (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];
}

MCAppOpenAdManager 特有 API

方法 说明
setAppOpenContainerView: 设置开屏广告容器视图
setLoadAdTimeout: 设置加载超时时间(NSTimeInterval,单位秒,建议 5-10 秒)
上一个
智能缓存
下一个
插屏广告
最近修改: 2026-04-03Powered by