Skip to main content

横幅广告

一、集成建议#

  • TradPlusAdBanner本身是一个UIView,开发者可自行调整位置和大小。只需要在创建后添加到指定UIView上
  • 自动展示开启时,广告tpBannerAdLoaded:成功后,会自动把广告内容填充到TradPlusAdBanner中。
  • Banner的自动刷新功能,您可以在TradPlus后台进行配置。 可参考 自动刷新功能说明

主要步骤#

  • 创建TradPlusAdBanner对象
  • 加载插屏广告loadAdWithSceneId:
  • 注册TradPlusADBannerDelegate回调,获取广告加载、展示、点击、关闭等回调。
  • 广告加载成功后将自动填充TradPlusAdBanner,无需调用showWithSceneId:方法

注意事项#

  • 不建议在tpBannerAdOneLayerLoad : didFailWithError:回调中执行广告加载的方法,对广告平台方来说,短时间内多次请求,不容易得到填充,同时会造成多次无效请求,也可能会导致应用卡顿;如果产品逻辑需要在这里发起请求,开发者需要控制时间间隔和次数,比如分别在10S、30S、60S后发起请求。
  • 关闭自动展示(autoShow = NO)时,开发者需要,在loaded回调后手动调用 showWithSceneId:进行展示.

二、TradPlusAdBanner API说明#

1. 加载、展示广告#

  • 参数说明
参数说明
adUnitIDadUnitID为TradPlus后台创建的广告位ID,SDK将根据广告位ID拉取配置并请求广告
sceneIdsceneId为广告场景ID是可选参数,默认为nil,开发者需和- (void)showAdWithSceneId:(nullable NSString *)sceneId;配套使用
如需使用广告场景请参考: 广告场景说明
  • 方法说明
方法说明
- (void)setAdUnitID:(NSString *)adUnitID;设置广告位ID
- (void)loadAdWithSceneId:(nullable NSString *)sceneId;请求该广告位横幅广告
注:autoShow=YES 开启自动展示时 场景ID在此方法设置
- (BOOL)isReady;检测该广告位是否有可用广告
true为有可用广告
flase为无可用广告
- (void)entryAdScenario:(nullable NSString *)sceneId;进入广告场景
广告场景是用来统计进入广告场景的次数和进入场景后展示广告的次数,所以请在准确的位置调用。
- (void)showWithSceneId:(nullable NSString *)sceneId;展示该广告位横幅广告,关闭自动展示(autoShow = NO)时需手动调用该方法进行展示
注:autoShow=NO 关闭自动展示时 场景ID在此方法设置
- (void)setBannerSize:(CGSize)size;设置banner尺寸,需在load前设置(百度 Pangle)

2. 监听回调#

  • 参数说明
参数说明
adInfo广告位ID、三方广告平台、ecpm等信息,具体请参考回调信息说明
error返回的是TP封装的错误信息:详见: 错误码说明
  • TradPlusADInterstitialDelegate 回调接口及说明
方法说明
- (void)tpBannerAdLoaded:(NSDictionary *)adInfo;横幅广告加载完成
v9.6.0+ 优化回调方式,一次loadAd对应一次tpBannerAdLoaded回调,不调用不回调。
- (void)tpBannerAdLoadFailWithError:(NSError *)error;横幅广告加载失败,返回的是TP封装的错误信息。详见: 错误码说明
tpBannerAdOneLayerLoad :didFailWithError:返回三方源的错误信息
- (void)tpBannerAdImpression:(NSDictionary *)adInfo;横幅广告展示成功 三方认可的有效展示
- (void)tpBannerAdShow:(NSDictionary )adInfo didFailWithError:(NSError )error;横幅广告展示失败
- (void)tpBannerAdClicked:(NSDictionary *)adInfo;横幅广告被点击
- (UIViewController *)viewControllerForPresentingModalView;为三方提供rootviewController 用于点击广告后的操作
  • TradPlusADInterstitialDelegate 回调接口及说明(可选)
方法说明
- (void)tpBannerAdStartLoad:(NSDictionary *)adInfo;v7.6.0+新增 开始加载流程
- (void)tpBannerAdLoadStart:(NSDictionary *)adInfo;v7.6.0+已废弃 请使用tpBannerAdOneLayerStartLoad:
- (void)tpBannerAdOneLayerStartLoad:(NSDictionary *)adInfo;当每个广告源开始加载时会都会回调一次。
v7.6.0+新增 替代原回调接口:tpBannerAdLoadStart:(NSDictionary *)adInfo;
- (void)tpBannerAdIsLoading:(NSDictionary *)adInfo;v8.7.0+新增 调用load之后如果收到此回调,说明广告位仍处于加载状态,请等待上一轮load结果回调后再触发新的一轮广告加载。
- (void)tpBannerAdBidStart:(NSDictionary *)adInfo;bidding开始
- (void)tpBannerAdBidEnd:(NSDictionary *)adInfo success:(BOOL)success;v7.6.0+已废弃 请使用 tpBannerAdBidEnd:error:
- (void)tpBannerAdBidEnd:(NSDictionary )adInfo error:(NSError )error;bidding结束 error = nil 表示成功
- (void)tpBannerAdOneLayerLoaded:(NSDictionary *)adInfo;当每个广告源加载成功后会都会回调一次
- (void)tpBannerAdOneLayerLoad:(NSDictionary )adInfo didFailWithError:(NSError )error;当每个广告源加载失败后会都会回调一次,返回三方源的错误信息
- (void)tpBannerAdAllLoaded:(BOOL)success;加载流程全部结束
- (void)tpBannerAdClose:(NSDictionary *)adInfo;三方关闭按钮触发时的回调

3. 其他API#

  • 属性说明
属性说明
autoShow设置是否开启自动展示
YES:开启自动展示(默认)
NO:关闭自动展示
hidden隐藏或显示banner
如果在后台开启自动刷新功能,隐藏banner的同时会暂停自动刷新,重新显示则会继续启动自动刷新。
TPBannerContentModev6.9.0+新增 设置居中模式,需要在load前设置
支持三种模式:
TPBannerContentModeTop 顶部水平居中(默认)
TPBannerContentModeCenter 垂直居中并水平居中
TPBannerContentModeBottom 底边水平居中

4. 设置bannerSIze#

  • 需要在load前设置
  • 开发者可以通过此API预设横幅尺寸,TPSDK将根据平台情况优先使用预设尺寸请求三方横幅,适配大小。
//预设横幅大小
[self.banner setBannerSize:CGSizeMake(width, height)];
  • 支持通过bannerSIze直接设置的平台列表
平台说明
Admob(Adaptive Banner)支持宽度和高度设置
MyTarget支持宽度和高度设置
AdColony支持宽度和高度设置
Mintegral支持宽度和高度设置
Smaato支持宽度和高度设置
Liftoff普通banner:支持宽度设置,高度使用后台设置的尺寸
中矩型:支持宽度和高度设置
Facebook支持宽度设置,高度使用后台设置的尺寸
AppLovin支持宽度设置,高度使用后台设置的尺寸
Chartboost支持宽度设置,高度使用后台设置的尺寸
百度支持宽度设置,高度使用后台设置的比例进行计算
腾讯支持宽度和高度设置
穿山甲支持宽度和高度设置
  • 其他广告平台使用服务器下发尺寸

5.设置自定义原生模版#

  • 原生广告相关API及说明

  • 参数说明

参数说明
NativeBannerTemplatev8.4.0新增 指定原生横幅的渲染模版,未设置时SDK会使用默认模版进行渲染
customRenderingViewClass仅对Waterfall中的原生广告生效
TradPlusNativeRendererv8.4.0新增 指定原生横幅的renderer ,未设置时SDK会使用默认模版进行渲染
customRenderer仅对Waterfall中的原生广告生效
  • v8.4.0开始 横幅支持混用原生广告。对于需要使用自定义原生布局的开发者可以通过API来设置
//可通过此API设置原生的自定义模版,未设置时SDK会使用默认模版进行渲染
self.banner.customRenderingViewClass = [NativeBannerTemplate class];
//自定义View设置方式
NativeBannerTemplate *adView = [[NSBundle mainBundle] loadNibNamed:@"NativeBannerTemplate" owner:self options:nil].lastObject;
adView.frame = self.adView.bounds;
TradPlusNativeRenderer *nativeRenderer = [[TradPlusNativeRenderer alloc] init];
[nativeRenderer setTitleLable:adView.titleLabel canClick:YES];
[nativeRenderer setTextLable:adView.textLabel canClick:YES];
[nativeRenderer setCtaLable:adView.ctaLabel canClick:YES];
[nativeRenderer setIconView:adView.iconImageView canClick:YES];
[nativeRenderer setAdChoiceImageView:adView.adChoiceImageView canClick:YES];
[nativeRenderer setAdView:adView canClick:YES];
//可通过此API设置原生的自定义Renderer,未设置时SDK会使用默认模版进行渲染
self.banner.customRenderer = nativeRenderer;

6.Start.io 更多尺寸支持#

通过startapp_banner_size字段支持更多的尺寸设置
STA_LandscapeAdSize_480x50
STA_LandscapeAdSize_568x50
STA_PortraitAdSize_768x90
STA_LandscapeAdSize_1024x90

NSDictionary *params = @{@"startapp_banner_size":STA_LandscapeAdSize_480x50};
//load前设置
self.banner.localParams = params;
[self.banner loadAdWithSceneId:nil];

三、示例代码#

请参考:TradPlusAdBannerViewController

#import <TradPlusAds/TradPlusAdBanner.h>
@interface TradPlusAdBannerViewController ()<TradPlusADBannerDelegate>
@property (nonatomic,strong)TradPlusAdBanner *banner;
@property (nonatomic,weak)IBOutlet UIView *adView;
@end
@implementation TradPlusAdBannerViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.banner = [[TradPlusAdBanner alloc] init];
//设置广告位ID
[self.banner setAdUnitID:@"在TP平台创建的广告位ID"];
//设置回调
self.banner.delegate = self;
//添加到指定UIView上
[self.adView addSubview:self.banner];
}
#pragma mark - TradPlusADBannerDelegate
//横幅广告加载完成
- (void)tpBannerAdLoaded:(NSDictionary *)adInfo
{
}
//横幅广告加载失败
- (void)tpBannerAdLoadFailWithError:(NSError *)error
{
}
//横幅广告展示成功 三方认可的有效展示
- (void)tpBannerAdImpression:(NSDictionary *)adInfo
{
}
//横幅广告展现失败
- (void)tpBannerAdShow:(NSDictionary *)adInfo didFailWithError:(NSError *)error
{
}
//横幅广告被点击
- (void)tpBannerAdClicked:(NSDictionary *)adInfo
{
}