Skip to main content

激励视频

前提条件#

  • 接入TradPlus SDK
  • 初始化TradPlus SDK
  • 在TradPlus后台创建激励视频广告位

激励视频广告#

1.添加头文件并实现代理接口#
#import <TradPlusAds/MsRewardedVideoAd.h>
@interface ViewController ()<MsRewardedVideoAdDelegate>
2.添加⼀个MsRewardedVideoAd的属性#
@property (strong, nonatomic) MsRewardedVideoAd *rewardedVideoAd;
3.创建激励视频广告对象并加载广告#
self.rewardedVideoAd = [[MsRewardedVideoAd alloc] init];
self.rewardedVideoAd.delegate = self;
//推荐使用自动加载,将isAutoLoad的参数设置为YES,这样整个接入过程中都不需要调用loadAd方法。
[self.rewardedVideoAd setAdUnitID:@"160AFCDF01DDA48CCE0DBDBE69C8C669" isAutoLoad:YES];
//如果设置isAutoLoad为NO,此处需要调用loadAd。
//[self.rewardedVideoAd loadAd];
  • ⚠️注意,如果使用到kidoz 激励视频,不要在模态框单元进行广告的加载,会造成kidoz加载失败!
4.进入广告场景#
//用于TradPlus后台统计,在进入广告场景时,广告的填充率。
[self.rewardedVideoAd entryAdScenario];
//如果后台设置了广告场景 参数里填入场景ID
//[self.rewardedVideoAd entryAdScenario:@"广告场景 UID"];

广告场景调用时机和用途广告场景说明

5.实现delegate方法,监听广告状态#

⚠️注意:v5.7.3后回调命名有变动 请根据说明 使用最新的回调。

//load 完成
- (void)rewardedVideoAdAllLoaded:(int)readyCount
{
if (readyCount > 0)
{
//加载成功,有可供展示的激励视频广告。
}
else {
//加载失败,如果没有设置isAutoLoad为YES,需要在30秒后重新load一次。
//dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(30 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// [self.rewardedVideoAd loadAd];
// });
}
}
//waterfall单个源加载成功
-(void)rewardedVideoAdOneLayerLoaded:(NSDictionary *)dicChannelInfo
{
NSLog(@"%s", __FUNCTION__);
}
//waterfall单个广告源加载失败
-(void)rewardedVideoAdOneLayer:(NSDictionary *)dicChannelInfo didFailWithError:(NSError *)error
{
NSLog(@"%s->%@", __FUNCTION__, error);
}
//首次加载成功
-(void)rewardedVideoAdDidLoaded:(NSDictionary *)dicChannelInfo
{
NSLog(@"%s", __FUNCTION__);
}
//全部加载失败
-(void)rewardedVideoAd:(NSDictionary *)dicChannelInfo didFailedWithError:(NSError *)error
{
NSLog(@"%s->%@", __FUNCTION__, error);
}
//开始播放视频后回调
-(void)rewardedVideoAdShown:(NSDictionary *)dicChannelInfo
{
NSLog(@"%s", __FUNCTION__);
}
//视频播放结束后,关闭落地页
-(void)rewardedVideoAdDismissed:(NSDictionary *)dicChannelInfo
{
//dismiss后重新请求广告,如果是自动加载可不调用。
//[self.rewardedVideoAd loadAd];
NSLog(@"%s", __FUNCTION__);
}
//点击广告后回调。
-(void)rewardedVideoAdClicked:(NSDictionary *)dicChannelInfo
{
NSLog(@"%s", __FUNCTION__);
}
//播放完成获得奖励后回调 reward为TradPlus后台设置的奖励 通过reward.currencyType reward.amount访问
-(void)rewardedVideoAdShouldReward:(NSDictionary *)dicChannelInfo reward:(MSRewardedVideoReward *)reward
{
NSLog(@"%s", __FUNCTION__);
}
//竞价开始 
- (void)rewardedVideoAdBidStart
{
NSLog(@"%s", __FUNCTION__);
}
//竞价结束
- (void)rewardedVideoAdBidEnd
{
NSLog(@"%s", __FUNCTION__);
}
//三方渠道加载开始
- (void)rewardedVideoAdLoadStart:(NSDictionary *)dicChannelInfo
{
NSLog(@"%s", __FUNCTION__);
}
//广告播放开始
- (void)rewardedVideoAdPlayStart:(NSDictionary *)dicChannelInfo
{
NSLog(@"%s", __FUNCTION__);
}
//广告播放结束
- (void)rewardedVideoAdPlayEnd:(NSDictionary *)dicChannelInfo
{
NSLog(@"%s", __FUNCTION__);
}
6.展示广告#
if (self.rewardedVideoAd.isAdReady)
[self.rewardedVideoAd showAdFromRootViewController:self];
//如果后台设置了广告场景 参数填入场景的UID
// if (self.rewardedVideoAd.isAdReady)
// [self.rewardedVideoAd showAdFromRootViewController:self sceneId:@"广告场景 UID"];
7.广告过期检测 (v6.1.0 新增)#
  • 广告位对象创建后调用。
  • 为防止游戏过程中补充过期广告会占用带宽,可以设置isExpiredAdChecking为NO,关闭每隔5分钟自动过期检测。默认true,将自动进行广告过期检测。
  • 如果关闭了过期检测,那么在游戏即将展示广告前要调用expiredAdCheck来触发一次广告过期检测。
@property (nonatomic, assign) BOOL isExpiredAdChecking;
- (void)expiredAdCheck;