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 原生广告介绍。

集成说明#

1. 初始化#

#import <TradPlusAds/TradPlusNativeBanner.h>
//初始化广告位 frame大小可自行调整
self.nativeBanner = [[TradPlusNativeBanner alloc] init];
[self.nativeBanner setAdUnitID:@"您的广告位ID"];
//设置回调
self.nativeBanner.delegate = self;

2. 加载广告#

//sceneId为广告场景ID
[self.nativeBanner loadAdWithSceneId:nil];

3. 显示广告#

//sceneId为广告场景ID
[self.nativeBanner showWithSceneId:nil];

4. 监听回调#

  • 回调信息说明

  • tpNativeBannerAdLoadFailWithError:返回的是TP封装的错误信息:详见: 错误码说明

  • tpNativeBannerAdOneLayerLoaded:didFailWithError: 返回三方源的错误信息

  • 以下回调接口已废弃v7.6.0+

- (void)tpNativeBannerAdBidEnd:(NSDictionary *)adInfo success:(BOOL)success DEPRECATED_MSG_ATTRIBUTE("Please use tpNativeBannerAdBidEnd:error:");
- (void)tpNativeBannerAdLoadStart:(NSDictionary *)adInfo DEPRECATED_MSG_ATTRIBUTE("Please use tpNativeBannerAdOneLayerStartLoad:");

回调接口及说明

///AD加载完成 首个广告源加载成功时回调 一次加载流程只会回调一次
- (void)tpNativeBannerAdDidLoaded:(NSDictionary *)adInfo;
///AD加载失败
///tpNativeBannerAdOneLayerLoaded:didFailWithError:返回三方源的错误信息
- (void)tpNativeBannerAdLoadFailWithError:(NSError *)error;
///AD展现
- (void)tpNativeBannerAdImpression:(NSDictionary *)adInfo;
///AD展现失败
- (void)tpNativeBannerAdShow:(NSDictionary *)adInfo didFailWithError:(NSError *)error;
///AD被点击
- (void)tpNativeBannerAdClicked:(NSDictionary *)adInfo;
@optional
///为三方提供rootviewController 用于点击广告后的操作
- (UIViewController *)viewControllerForPresentingModalView;
///v7.6.0+新增 开始加载流程
- (void)tpNativeBannerAdStartLoad:(NSDictionary *)adInfo;
///当每个广告源开始加载时会都会回调一次。
///v7.6.0+新增。替代原回调接口:tpNativeBannerAdLoadStart:(NSDictionary *)adInfo;
- (void)tpNativeBannerAdOneLayerStartLoad:(NSDictionary *)adInfo;
///v8.7.0+新增
///调用load之后如果收到此回调,说明广告位仍处于加载状态,无法触发新的一轮广告加载。
- (void)tpNativeBannerAdIsLoading:(NSDictionary *)adInfo;
///bidding开始
- (void)tpNativeBannerAdBidStart:(NSDictionary *)adInfo;
///bidding结束 error = nil 表示成功
- (void)tpNativeBannerAdBidEnd:(NSDictionary *)adInfo error:(NSError *)error;
///当每个广告源加载成功后会都会回调一次。
- (void)tpNativeBannerAdOneLayerLoaded:(NSDictionary *)adInfo;
///当每个广告源加载失败后会都会回调一次,返回三方源的错误信息
- (void)tpNativeBannerAdOneLayerLoad:(NSDictionary *)adInfo didFailWithError:(NSError *)error;
///加载流程全部结束
- (void)tpNativeBannerAdAllLoaded:(BOOL)success;

5. 接入参考#

参考:TradPlusAdNativeBannerViewController

6.自定义模版方式(可选)#

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

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

7.自定义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];