- 🚀 采用预加载机制提升用户体验
- ⚠️ 注意处理生命周期防止内存泄漏
- 🔧 推荐使用标准化回调处理流程
@interface RewardedVC () <MCRewardedAdDelegate, MCAdRevenueDelegate>
@property (nonatomic, strong) MCRewardedAd *rewardedAd;
@property (nonatomic, assign) NSInteger retryAttempt;
@end
@implementation RewardedVC
#define RewardedPlacementID @"your mediation unit id"
//场景ID
#define RewardedSceneID @""
#pragma mark - Load Ad
- (void)loadAd {
if (!self.rewardedAd) {
self.rewardedAd = [[MCRewardedAd alloc] initWithPlacementId:RewardedPlacementID];
}
self.rewardedAd.delegate = self;
self.rewardedAd.revenueDelegate = self;
[self.rewardedAd loadAd];
}
#pragma mark - MCRewardedAdDelegate
// 广告加载成功
- (void)didLoadAd:(MCAdInfo *)ad {
// 重置重试次数
self.retryAttempt = 0;
}
// 广告加载失败
- (void)didFailToLoadAdWithError:(MCError *)error {
// 我们建议您使用指数递增的延迟进行重试,最大延迟时间为8秒或最大重试次数为3次
if (self.retryAttempt >= 3) {
return;
}
self.retryAttempt++;
NSInteger delaySec = pow(2, MIN(3, self.retryAttempt));
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delaySec * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[self.rewardedAd loadAd];
});
}
// 广告展示成功
- (void)didDisplayAd:(MCAdInfo *)ad {
// 预加载
[self.rewardedAd loadAd];
}
// 广告关闭
- (void)didHideAd:(MCAdInfo *)ad {
// 预加载
[self.rewardedAd loadAd];
}
// 广告点击
- (void)didClickAd:(MCAdInfo *)ad {
}
// 广告展示失败
- (void)didFailToDisplayAd:(MCAdInfo *)ad withError:(MCError *)error {
// 预加载
[self.rewardedAd loadAd];
}
// 奖励触发
- (void)didRewardUserForAd:(MCAdInfo *)ad withReward:(MCReward *)reward {
}
//视频开始播放
- (void)didAdVideoStarted:(MCAdInfo *)ad {
}
//视频播放完毕
- (void)didAdVideoCompleted:(MCAdInfo *)ad {
}
#pragma mark - MCAdRevenueDelegate
// 收益跟踪
- (void)didPayRevenueForAd:(MCAdInfo *)ad {
}
if ([self.rewardedAd isReady]) {
[self.rewardedAd showAdWithViewController:self withExtra:@{kMCAPIPlacementScenarioIDKey:@"场景id"}];
} else {
[self.rewardedAd loadAd];
}
通过注册MCRewardedAdDelegate中的以下代理方法进行。
// 激励发放
- (void)didRewardUserForAd:(MCAdInfo *)ad withReward:(MCReward *)reward {
}
[self.rewardedAd destroyAd];
- (void)loadAd {
MCRewardedAd *rewardeAd = [[MCRewardedAd alloc] initWithPlacementId:self.placementID];
rewardeAd.delegate = self;
rewardeAd.revenueDelegate = self;
[rewardeAd setLoadExtraParameter:@{
@"userID": @"test_userId",
@"userData": @"test_userData"
}];
[rewardeAd setExtraParameter:@{
@"test_extra_key": @"test_extra_value"
}];
[rewardeAd loadAd];
self.rewardedAd = rewardeAd;
}
- (void)didLoadAd:(MCAdInfo *)ad {
// 获取自定义参数
NSString *originDataJsonString = ad.originData;
}