Skip to main content

插屏广告

前提条件#

  • 接入TradPlus SDK
  • 初始化TradPlus SDK
  • 在TradPlus后台创建插屏广告位

Interstitial 广告集成#

1.添加头文件并实现代理接口#
#import <TradPlusAds/MsInterstitialAd.h>
@interface viewController :UIViewController<MsInterstitialAdDelegate>
2.添加⼀个 MsInterstitialAd 的属性#
@property (nonatomic, strong) MsInterstitialAd *interstitialAd;
3.创建插屏广告对象并加载广告#
self.interstitialAd = [[MsInterstitialAd alloc] init];
//推荐将isAutoLoad设置为YES,不再需要loadAd方法,由sdk进行维护广告的加载。
[self.interstitialAd setAdUnitID:@"063265866B93A4C6F93D1DDF7BF7329B" isAutoLoad:YES];//此处adunitid 需替换成TradPlus后台申请的对应的广告位id
self.interstitialAd.delegate = self;
// 加载插屏广告 如果setAdUnitID方法没有设置参数isAutoLoad为YES,需要调用一次loadAd方法。
// [self.interstitialAd loadAd];
  • ⚠️注意,如果使用到kidoz 插屏,不要在模态框单元进行广告的加载,会造成kidoz加载失败!
4.进入广告场景#
[self.interstitialAd entryAdScenario];
//如果后台设置了广告场景 参数里填入场景UID
//[self.interstitialAd entryAdScenario:@"广告场景 UID"];

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

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

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

//load 完成
- (void)interstitialAdAllLoaded:(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.interstitialAd loadAd];
// });
}
}
//单个广告源 加载成功
-(void)interstitialAdOneLayerLoaded:(NSDictionary *)dicChannelInfo
{
}
//单个广告源 加载失败
-(void)interstitialAdOneLayer:(NSDictionary *)dicChannelInfo didFailWithError:(NSError *)error
{
NSLog(@"%s->%@", __FUNCTION__, error);
}
//首次 加载成功
-(void)interstitialAdDidLoaded:(NSDictionary *)dicChannelInfo
{
}
//全部加载失败
-(void)interstitialAd:(NSDictionary *)dicChannelInfo didFailedWithError:(NSError *)error
{
NSLog(@"%s->%@", __FUNCTION__, error);
}
-(void)interstitialAdShown:(NSDictionary *)dicChannelInfo
{
}
//视频播放结束后回调
-(void)interstitialAdDismissed:(NSDictionary *)dicChannelInfo
{
//dismiss后重新请求一次 如果setAdUnitId设置了自动加载 不要调用
//[self.interstitialAd loadAd];
NSLog(@"%s", __FUNCTION__);
}
//点击广告后回调。
-(void)interstitialAdClicked:(NSDictionary *)dicChannelInfo
{
NSLog(@"%s", __FUNCTION__);
}
//headbidding 竞价开始
- (void)interstitialAdBidStart
{
NSLog(@"%s", __FUNCTION__);
}
//headbidding 竞价结束
- (void)interstitialAdBidEnd
{
NSLog(@"%s", __FUNCTION__);
}
//三方渠道开始加载
- (void)interstitialAdLoadStart:(NSDictionary *)dicChannelInfo
{
NSLog(@"%s", __FUNCTION__);
}
//视频广告开始播放
- (void)interstitialAdPlayStart:(NSDictionary *)dicChannelInfo
{
NSLog(@"%s", __FUNCTION__);
}
//视频广告播放结束
- (void)interstitialAdPlayEnd:(NSDictionary *)dicChannelInfo
{
NSLog(@"%s", __FUNCTION__);
}
6.展示广告#
// Ad is ready, present it!
if (self.interstitialAd.isAdReady)
[self.interstitialAd showAdFromRootViewController:self];
//如果在TradPlus 后台设置了广告场景 参数里填入场景的 UID
// if (self.interstitialAd.isAdReady)
// [self.interstitialAd showAdFromRootViewController:self sceneId:@"广告场景的UID"];
7.广告过期检测 (v6.1.0 新增)#
  • 广告位对象创建后调用。
  • 为防止游戏过程中补充过期广告会占用带宽,可以设置isExpiredAdChecking为NO,关闭每隔5分钟自动过期检测。默认true,将自动进行广告过期检测。
  • 如果关闭了过期检测,那么在游戏即将展示广告前要调用expiredAdCheck来触发一次广告过期检测。
@property (nonatomic, assign) BOOL isExpiredAdChecking;
- (void)expiredAdCheck;