Skip to main content

原生横幅

一、集成建议

  • (1)nativebanner是用native来拼接的banner,跟native相比是少了大图,在特定的场景可以代替banner广告(填充率和点击率,素材内容和质量上有差异)。由于native广告分自渲染和模板渲染,模板渲染是三方广告平台返回渲染好的view,所以只有支持自渲染的广告源才能用native来拼接的banner,模板渲染类型Native无法拼接成banner。
  • (2)nativebanner是按照banner的逻辑来实现,所以load成功以后会自动show出来,同时nativebanner也会有自动刷新等功能。

注意事项

  • Facebook MyTarget 有专门的原生横幅广告,其他的在三方后台申请自渲染类型的原生广告,
  • Facebook的原生横幅广告为FB方支持类型,并不是TP拼接的类型。故FB的NativeBanner模版和自渲染都能支持。但是FB的原生横幅广告必须有以下元素,缺少这些元素可能会导致 FaceBook不计入展示。更多了解,请看Audience Network 原生广告介绍。

二、TradPlusNativeBanner 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;请求该广告位原生横幅广告
- (BOOL)isReady;检测该广告位是否有可用广告
true为有可用广告
flase为无可用广告
- (void)entryAdScenario:(nullable NSString *)sceneId;进入广告场景
广告场景是用来统计进入广告场景的次数和进入场景后展示广告的次数,所以请在准确的位置调用。
- (void)showWithSceneId:(nullable NSString *)sceneId;展示该广告位原生横幅广告

2. 监听回调

  • 参数说明
参数说明
adInfo广告位ID、三方广告平台、ecpm等信息,具体请参考回调信息说明
error返回的是TP封装的错误信息:详见: 错误码说明
  • TradPlusADNativeBannerDelegate 回调接口及说明
方法说明
- (void)tpNativeBannerAdDidLoaded:(NSDictionary *)adInfo;原生横幅广告加载完成
v9.6.0+ 优化回调方式,一次loadAd对应一次tpNativeBannerAdDidLoaded回调,不调用不回调。
- (void)tpNativeBannerAdLoadFailWithError:(NSError *)error;原生横幅广告加载失败,返回的是TP封装的错误信息。详见: 错误码说明
tpNativeBannerAdOneLayerLoaded:didFailWithError:返回三方源的错误信息
- (void)tpNativeBannerAdImpression:(NSDictionary *)adInfo;原生横幅广告展示成功,三方认可的有效展示
- (void)tpNativeBannerAdShow:(NSDictionary *)adInfo didFailWithError:(NSError *)error;原生横幅广告展示失败
- (void)tpNativeBannerAdClicked:(NSDictionary *)adInfo;原生横幅广告被点击
- (UIViewController *)viewControllerForPresentingModalView;为三方提供rootviewController 用于点击广告后的操作
  • TradPlusADNativeBannerDelegate 回调接口及说明(可选)
方法说明
- (void)tpNativeBannerAdStartLoad:(NSDictionary *)adInfo;v7.6.0+新增 开始加载流程
- (void)tpNativeBannerAdLoadStart:(NSDictionary *)adInfo;v7.6.0+已废弃 请使用 tpNativeBannerAdOneLayerStartLoad:
- (void)tpNativeBannerAdOneLayerStartLoad:(NSDictionary *)adInfo;当每个广告源开始加载时会都会回调一次。
v7.6.0+新增 替代原回调接口:tpNativeBannerAdLoadStart:(NSDictionary *)adInfo;
- (void)tpNativeBannerAdIsLoading:(NSDictionary *)adInfo;v8.7.0+新增 调用load之后如果收到此回调,说明广告位仍处于加载状态,无法触发新的一轮广告加载。
- (void)tpNativeBannerAdBidStart:(NSDictionary *)adInfo;bidding开始
- (void)tpNativeBannerAdBidEnd:(NSDictionary *)adInfo success:(BOOL)success;v7.6.0+已废弃 请使用 tpNativeBannerAdBidEnd:error:
- (void)tpNativeBannerAdBidEnd:(NSDictionary *)adInfo error:(NSError *)error;bidding结束 error = nil 表示成功
- (void)tpNativeBannerAdOneLayerLoaded:(NSDictionary *)adInfo;当每个广告源加载成功后会都会回调一次。
- (void)tpNativeBannerAdOneLayerLoad:(NSDictionary *)adInfo didFailWithError:(NSError *)error;当每个广告源加载失败后会都会回调一次,返回三方源的错误信息
- (void)tpNativeBannerAdAllLoaded:(BOOL)success;加载流程全部结束

三、示例代码

请参考:TradPlusAdNativeBannerViewController

1. 初级用法

#import <TradPlusAds/TradPlusNativeBanner.h>

@interface TradPlusAdNativeBannerViewController ()<TradPlusADNativeBannerDelegate>
@property (nonatomic,strong)TradPlusNativeBanner *nativeBanner;
@end

@implementation TradPlusAdNativeBannerViewController

- (void)viewDidLoad
{
[super viewDidLoad];
self.nativeBanner = [[TradPlusNativeBanner alloc] init];
//设置广告位ID
[self.nativeBanner setAdUnitID:@"在TP平台创建的广告位ID"];
//设置代理
self.nativeBanner.delegate = self;
//添加到指定UIView上
[self.adView addSubview:self.nativeBanner];

//指定模版方式需要 指定view方式 关闭自动显示
// self.nativeBanner.autoShow = NO;
}
}

- (void)showNativeBannerAd
{
[self.nativeBanner showWithSceneId:nil];
}

#pragma mark - TradPlusADNativeDelegate

//原生横幅广告加载完成 首个广告源加载成功时回调 一次加载流程只会回调一次
- (void)tpNativeBannerAdDidLoaded:(NSDictionary *)adInfo;
{
}
//原生横幅广告加载失败
///tpNativeBannerAdOneLayerLoaded:didFailWithError:返回三方源的错误信息
- (void)tpNativeBannerAdLoadFailWithError:(NSError *)error
{
}
//原生横幅广告展现
- (void)tpNativeBannerAdImpression:(NSDictionary *)adInfo
{
}
//原生横幅广告展现失败
- (void)tpNativeBannerAdShow:(NSDictionary *)adInfo didFailWithError:(NSError *)error
{
}
//原生横幅广告被点击
- (void)tpNativeBannerAdClicked:(NSDictionary *)adInfo
{
}

2. 高级用法-自定义模版方式(可选)

RenderingViewClass,继承UIView,可参照 Demo 需要在load前关闭自动显示

//关闭自动显示
self.nativeBanner.autoShow = NO;
//sceneId为广告场景ID
[self.nativeBanner showWithRenderingViewClass:[RenderingViewClass class] sceneId:nil];

3. 高级用法-自定义view方式(可选)

需要在load前关闭自动显示

//关闭自动显示
self.nativeBanner.autoShow = NO;
	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];
[self.nativeBanner showWithRenderer:nativeRenderer sceneId:nil];