Skip to main content

横幅广告

一.必要重写的方法#

  • 开发者需要继承 TradPlusBaseAdapter并重写相关方法:
    • 开发者调用 TradPlusAdBannerloadAdWithSceneId: API时,会调用到自定义Adapter的loadAdWithWaterfallItem:方法
    • 开发者调用 TradPlusAdBannerisAdReadyAPI时,会调用到自定义Adapter的isReady方法
    • 开发者调用TradPlusAdBannershowWithSceneId: API时,会依次调用到自定义Adapter的isReadygetCustomObject方法
    • TradPlusAdBanner默认开启的自动展示模式下,SDK会在load完成后自动调用 showWithSceneId
方法参数说明返回值作用
- (void)loadAdWithWaterfallItem:(TradPlusAdWaterfallItem *)itemitem:包含有服务器下发和本地配置的参数void用于获取服务器下发和本地配置的参数,实现自定义广告的加载逻辑
- (id)getCustomObjectshow 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)等。
  • 加载广告 ;并在加载结束后,调用 AdLoadFinshAdLoadFailWithError 来通知加载成功与否
//以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].canCollectPersonalInfoGDPR,欧盟(EU)和欧洲经济区(EEA)通用数据保护条例
yes=允许获取设备数据 no=不允许获取设备数据