💡Tips
- Smart Cache 自动管理多广告位并行加载与缓存比价,无需手动管理多个
MCRewardedAd实例MCRewardAdManager为普通实例类,建议作为属性长期持有- 请通过
smartCacheDidRewardUserForAd:withReward:回调确认奖励发放,这是激励发放的唯一可靠时机
#import <MCSDK/MCSDK.h>
@interface SmartCacheRewardedVC () <MCSmartCacheDelegate>
@property (nonatomic, strong) MCRewardAdManager *rewardManager;
@end
@implementation SmartCacheRewardedVC
#pragma mark - Load Ad
- (void)loadAd {
if (!self.rewardManager) {
self.rewardManager = [[MCRewardAdManager alloc] init];
}
// 建议在首次 loadAd 前设置代理
self.rewardManager.delegate = self;
[self.rewardManager 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.rewardManager isReady]) {
[self.rewardManager showAdWithViewController:self];
}
如需传入场景 ID 等扩展参数:
if ([self.rewardManager isReady]) {
[self.rewardManager showAdWithViewController:self
withExtra:@{kMCAPIPlacementScenarioIDKey: @"场景id"}];
}
通过 MCSmartCacheDelegate 中的以下回调确认激励发放:
// 用户达成激励条件
- (void)smartCacheDidRewardUserForAd:(MCAdInfo *)ad withReward:(MCReward *)reward {
// 在此处发放奖励
}
激励视频相关的辅助回调:
// 视频开始播放
- (void)smartCacheDidAdVideoStarted:(MCAdInfo *)ad { }
// 视频播放完成
- (void)smartCacheDidAdVideoCompleted:(MCAdInfo *)ad { }
[self.rewardManager destroyAd];
页面或模块销毁时应调用
destroyAd释放缓存池资源,避免内存泄漏。释放后需重新loadAd才能继续使用。
- (void)loadAd {
if (!self.rewardManager) {
self.rewardManager = [[MCRewardAdManager alloc] init];
}
self.rewardManager.delegate = self;
// 设置加载时的额外参数,loadAd 前调用
[self.rewardManager setLoadExtraParameter:@{
@"userID": @"test_userId",
@"userData": @"test_userData"
}];
// 设置聚合扩展参数,loadAd 前调用
[self.rewardManager setExtraParameter:@{
@"test_extra_key": @"test_extra_value"
}];
[self.rewardManager loadAd];
}