插屏广告
一.必要重写的方法
- 开发者需要继承 TradPlusBaseAdapter并重写相关方法:
- 开发者调用
TradPlusAdInterstitial
的loadAd
API时,会调用到自定义Adapter的loadAdWithWaterfallItem:
方法 - 开发者调用
TradPlusAdInterstitial
的isAdReady
API时,会调用到自定义Adapter的isReady
方法 - 开发者调用
TradPlusAdInterstitial
的showAdFromRootViewController:sceneId:
API时,会依次调用到自定义Adapter的isReady
、showAdFromRootViewController:
方法
- 开发者调用
方法 | 参数说明 | 返回值 | 作用 |
---|---|---|---|
- (void)loadAdWithWaterfallItem:(TradPlusAdWaterfallItem *)item | item:包含有服务器下发和本地配置的参数 | void | 用于获取服务器下发和本地配置的参数,实现自定义广告的加载逻辑 |
- (void)showAdFromRootViewController:(UIViewController *)rootViewController | rootViewController:show Ad时传入的UIViewController | void | 实现展示自定义广告的逻辑 |
- (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)等。
-
加载广告 ;并在加载结束后,调用
AdLoadFinsh
或AdLoadFailWithError
来通知加载成功与否
//以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].canCollectPersonalInfo | GDPR,欧盟(EU)和欧洲经济区(EEA)通用数据保护条例 yes=允许获取设备数据 no=不允许获取设备数据 |