请输入
菜单

激励视频广告

  • 🚀 采用预加载机制提升用户体验
  • ⚠️ 注意处理生命周期防止内存泄漏
  • 🔧 推荐使用标准化回调处理流程

1. 加载广告

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

2. 展示广告

objective-c 复制代码
if ([self.rewardedAd isReady]) {
    [self.rewardedAd showAdWithViewController:self withExtra:@{kMCAPIPlacementScenarioIDKey:@"场景id"}];
} else {
    [self.rewardedAd loadAd];
}

3. 下发奖励

通过注册MCRewardedAdDelegate中的以下代理方法进行。

objective-c 复制代码
// 激励发放
- (void)didRewardUserForAd:(MCAdInfo *)ad withReward:(MCReward *)reward {
 
}

4. 销毁广告

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

5. 设置自定义参数

objective-c 复制代码
- (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;
}
上一个
广告样式
下一个
插屏广告
最近修改: 2025-07-21Powered by