横幅广告
一.必要重写的方法
- 开发者需要继承 TradPlusBaseAdapter并重写相关方法:
- 开发者调用
TradPlusAdBanner
的loadAdWithSceneId:
API时,会调用到自定义Adapter的loadAdWithWaterfallItem:
方法 - 开发者调用
TradPlusAdBanner
的isAdReady
API时,会调用到自定义Adapter的isReady
方法 - 开发者调用
TradPlusAdBanner
的showWithSceneId:
API时,会依次调用到自定义Adapter的isReady
、getCustomObject
方法 TradPlusAdBanner
默认开启的自动展示模式下,SDK会在load完成后自动调用showWithSceneId
- 开发者调用
方法 | 参数说明 | 返回值 | 作用 |
---|---|---|---|
- (void)loadAdWithWaterfallItem:(TradPlusAdWaterfallItem *)item | item:包含有服务器下发和本地配置的参数 | void | 用于获取服务器下发和本地配置的参数,实现自定义广告的加载逻辑 |
- (id)getCustomObject | show Ad时返回展示的横幅广告实例 | id | 用于返回加载完成后的横幅广告实例 |
- (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
获取 后台配置的参数 - 通过
TradPlusAdWaterfallItem
类,item.bannerRootViewController
获取 用于用户互动后展示内容的UIViewController - 初始化自定义广告平台,根据自身需求,设置广告平台的参数,海外平台的隐私设置(如:CCPA,COPPA,GDPR)等。
- 加载广告 ;并在加载结束后,调用
AdLoadFinsh
或AdLoadFailWithError
来通知加载成功与否
//以AdMob为例
- (void)loadAdWithWaterfallItem:(TradPlusAdWaterfallItem *)item
{
//通过 item.config 获取后台配置信息
NSString *placementId = item.config[@"placementId"];
if(placementId == nil)
{
//配置错误
[self AdConfigError]
return;
}
//初始化三方平台,设置广告平台的参数,海外平台的隐私设置等
//设置横幅尺寸
GADAdSize adSize = kGADAdSizeBanner;
self.bannerView = [[GADBannerView alloc] initWithAdSize:adSize];
self.bannerView.adUnitID = placementId;
self.bannerView.rootViewController = item.bannerRootViewController;
self.bannerView.delegate = self;
GADRequest *request = [GADRequest request];
//设置GDPR
if (![MSConsentManager sharedManager].canCollectPersonalInfo)
{
GADExtras *extras = [[GADExtras alloc] init];
extras.additionalParameters = @{@"npa": @"1"};
[request registerAdNetworkExtras:extras];
}
[self.bannerView loadRequest:request];
}
#pragma mark - GADBannerViewDelegate
- (void)bannerViewDidReceiveAd:(nonnull GADBannerView *)bannerView
{
//加载完成
[self AdLoadFinsh];
}
- (void)bannerView:(nonnull GADBannerView *)bannerView
didFailToReceiveAdWithError:(nonnull NSError *)error
{
//加载失败
[self AdLoadFailWithError:error];
}
3.在getCustomObject
方法中返回用于展示的 横幅广告实例
//以AdMob为例
- (id)getCustomObject
{
return self.bannerView;
}
4.在isReady
方法中返回广告是否过期
//以AdMob为例
- (BOOL)isReady
{
return (self.bannerView != nil);
}
5.根据各广告平台API,执行相关方法通知开发者
//以AdMob为例
- (void)bannerViewDidRecordImpression:(nonnull GADBannerView *)bannerView
{
//广告展示
[self AdShow];
}
- (void)bannerViewDidRecordClick:(nonnull GADBannerView *)bannerView
{
//广告点击
[self AdClick];
}
四.其他
可选API bannerDidAddSubView:
此方法会在横幅广告被添加到屏幕上时调用。
请根据三方平台特性进行调整如:调整宽度,居中等
//以AdMob为例
- (void)bannerDidAddSubView:(UIView *)subView
{
if(subView.bounds.size.width != 0)
{
CGRect rect = self.bannerView.frame;
rect.size.width = subView.bounds.size.width;
self.bannerView.frame = rect;
}
}
关于 如何获取 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=不允许获取设备数据 |