Skip to main content

插屏广告

一.必要重写的方法#

  • 开发者需要继承 TradPlusBaseAdapter并重写相关方法:
    • 开发者调用 TradPlusAdInterstitialloadAd API时,会调用到自定义Adapter的loadAdWithWaterfallItem:方法
    • 开发者调用 TradPlusAdInterstitialisAdReadyAPI时,会调用到自定义Adapter的isReady方法
    • 开发者调用TradPlusAdInterstitialshowAdFromRootViewController:sceneId: API时,会依次调用到自定义Adapter的isReadyshowAdFromRootViewController:方法
方法参数说明返回值作用
- (void)loadAdWithWaterfallItem:(TradPlusAdWaterfallItem *)itemitem:包含有服务器下发和本地配置的参数void用于获取服务器下发和本地配置的参数,实现自定义广告的加载逻辑
- (void)showAdFromRootViewController:(UIViewController *)rootViewControllerrootViewController:show Ad时传入的UIViewControllervoid实现展示自定义广告的逻辑
- (BOOL)isReady-----Bool用于展示广告前判断自定义广告是否过期

二.回调方法说明#

方法说明
- (void)AdConfigError广告配置信息错误时执行回调给开发者
- (void)AdLoadFinsh广告加载完成时执行回调给开发者
- (void)AdLoadFailWithError:(NSError *)error广告加载失败时执行回调给开发者
error:错误信息
- (void)AdShow广告展示时执行回调给开发者
- (void)AdShowFailWithError:(NSError *)error广告展示失败时执行回调给开发者
error:错误信息
- (void)AdClick广告点击时执行回调给开发者
- (void)AdClose广告关闭时执行回调给开发者

三.集成说明#

1.创建您在 TP后台登记 的自定义类,并继承TradPlusBaseAdapter

#import <TradPlusAds/TradPlusBaseAdapter.h>
@interface ClassName : TradPlusBaseAdapter
@end

2.在loadAdWithWaterfallItem:方法中实现自定义平台的初始化,加载等逻辑

  • 通过 TradPlusAdWaterfallItem 类,item.config 获取后台配置的参数

  • 初始化自定义广告平台,根据自身需求,设置广告平台的参数,海外平台的隐私设置(如:CCPA,COPPA,GDPR)等。

  • 加载广告 ;并在加载结束后,调用 AdLoadFinshAdLoadFailWithError 来通知加载成功与否

//以AdMob为例
- (void)loadAdWithWaterfallItem:(TradPlusAdWaterfallItem *)item
{
//通过 item.config 获取后台配置信息
NSString *placementId = item.config[@"placementId"];
if(placementId == nil)
{
//配置错误
[self AdConfigError]
return;
}
//初始化三方平台,设置广告平台的参数,海外平台的隐私设置等
GADRequest *request = [GADRequest request];
//设置GDPR
if (![MSConsentManager sharedManager].canCollectPersonalInfo)
{
GADExtras *extras = [[GADExtras alloc] init];
extras.additionalParameters = @{@"npa": @"1"};
[request registerAdNetworkExtras:extras];
}
__weak typeof(self) weakSelf = self;
[GADInterstitialAd loadWithAdUnitID:placementId request:request completionHandler:^(GADInterstitialAd * _Nullable interstitialAd, NSError * _Nullable error) {
if(error == nil)
{
weakSelf.interstitialAd = interstitialAd;
//加载成功
[weakSelf AdLoadFinsh];
}
else
{
//加载失败
[weakSelf AdLoadFailWithError:error];
}
}];
}

3.在showAdFromRootViewController:方法中实现自定义平台的展示

//以AdMob为例
- (void)showAdFromRootViewController:(UIViewController *)rootViewController
{
NSError *error;
if([self.interstitialAd canPresentFromRootViewController:rootViewController error:&error])
{
self.interstitialAd.fullScreenContentDelegate = self;
//调用三方API进行广告展示广告
[self.interstitialAd presentFromRootViewController:rootViewController];
}
else
{
//展示失败
[self AdShowFailWithError:error];
}
}

4.在isReady方法中返回广告是否过期

//以AdMob为例
- (BOOL)isReady
{
return (self.interstitialAd != nil);
}

5.根据各广告平台API,执行相关方法通知开发者

//以AdMob为例
- (void)adDidRecordImpression:(nonnull id<GADFullScreenPresentingAd>)ad
{
//广告展示
[self AdShow];
}
- (void)adDidRecordClick:(nonnull id<GADFullScreenPresentingAd>)ad
{
//广告点击
[self AdClick];
}
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error
{
//展示失败
[self AdShowFailWithError:error];
}
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad
{
//广告关闭
[self AdClose];
}
- (void)adDidPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad
{
}
- (void)adWillDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad
{
}

四.其他#

代码实例

关于 如何获取 TPSDK 中的 海外隐私权限设置参数

#import <TradPlusAds/MsCommon.h>
#import <TradPlusAds/MSConsentManager.h>
方法说明
[[NSUserDefaults standardUserDefaults] integerForKey:gTPCOPPAStorageKey]COPPA,美国儿童在线隐私权保护法
0=未设置,1=成人 ,2=儿童
[[NSUserDefaults standardUserDefaults] integerForKey:gTPCCPAStorageKey]CCPA,加州消费者隐私法案
0=未设置,1=不上报数据 ,2=上报数据
[MSConsentManager sharedManager].canCollectPersonalInfoGDPR,欧盟(EU)和欧洲经济区(EEA)通用数据保护条例
yes=允许获取设备数据 no=不允许获取设备数据