Skip to main content

标准原生

标准原生#

  • (1)原生广告是可以由开发者控制大小,尽可能融入到app的内容中去,从而提升广告的点击和转化。
  • (2)原生广告分自渲染模板渲染
类型说明
自渲染三方广告平台返回广告素材由开发者来拼接成的类型。三方后台的类型选择需要和TP后台一致,否则会请求失败。
模板渲染三方广告平台返回渲染好的view,开发者直接添加到一个容器就可以展示出来。

注意事项#

  • 接入Facebook原生广告必须有以下元素。缺少这些元素可能会导致 FaceBook不计入展示。更多了解,请看Audience Network 原生广告介绍。

集成说明#

1. 初始化#

#import <TradPlusAds/TradPlusAdNative.h>
//初始化广告位
self.nativeAd = [[TradPlusAdNative alloc] init];
[self.nativeAd setAdUnitID:@"您的广告位ID"];
//设置 原生模版类广告的加载尺寸(可选)
[self.nativeAd setTemplateRenderSize:CGSizeMake(320, 200)];
//下载完资源成后通知load完成(可选)
self.nativeAd.finishDownload = YES;
//设置回调
self.nativeAd.delegate = self;

2. 加载广告#

[self.nativeAd loadAd];

3. 显示广告#

原生需要 RenderingViewClass,继承UIView, RenderingViewClass 需要实现 TradPlusNativeAdRendering 协议 可参照 Demo 中的 TPNativeTemplate

//传入RenderingViewClass 及 subview
//sceneId为广告场景ID
[self.nativeAd showADWithRenderingViewClass:[RenderingViewClass class] subview:self.adView sceneId:nil];

4. 监听回调#

  • 回调信息说明

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

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

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

- (void)tpNativeAdBidEnd:(NSDictionary *)adInfo success:(BOOL)success DEPRECATED_MSG_ATTRIBUTE("Please use tpNativeAdBidEnd:error:");
- (void)tpNativeAdLoadStart:(NSDictionary *)adInfo DEPRECATED_MSG_ATTRIBUTE("Please use tpNativeAdOneLayerStartLoad:");

回调接口及说明

///AD加载完成 首个广告源加载成功时回调 一次加载流程只会回调一次
- (void)tpNativeAdLoaded:(NSDictionary *)adInfo;
///AD加载失败
///tpNativeAdOneLayerLoad:didFailWithError:返回三方源的错误信息
- (void)tpNativeAdLoadFailWithError:(NSError *)error;
///AD展现
- (void)tpNativeAdImpression:(NSDictionary *)adInfo;
///AD展现失败
- (void)tpNativeAdShow:(NSDictionary *)adInfo didFailWithError:(NSError *)error;
///AD被点击
- (void)tpNativeAdClicked:(NSDictionary *)adInfo;
@optional
///为三方提供rootviewController 用于点击广告后的操作
- (UIViewController *)viewControllerForPresentingModalView;
///v7.6.0+新增 开始加载流程
- (void)tpNativeAdStartLoad:(NSDictionary *)adInfo;
///当每个广告源开始加载时会都会回调一次。
///v7.6.0+新增。替代原回调接口:tpNativeAdLoadStart:(NSDictionary *)adInfo;
- (void)tpNativeAdOneLayerStartLoad:(NSDictionary *)adInfo;
///v8.7.0+新增
///调用load之后如果收到此回调,说明广告位仍处于加载状态,无法触发新的一轮广告加载。
- (void)tpNativeAdIsLoading:(NSDictionary *)adInfo;
///AD被关闭
- (void)tpNativeAdClose:(NSDictionary *)adInfo;
///bidding开始
- (void)tpNativeAdBidStart:(NSDictionary *)adInfo;
///bidding结束 error = nil 表示成功
- (void)tpNativeAdBidEnd:(NSDictionary *)adInfo error:(NSError *)error;
///当每个广告源加载成功后会都会回调一次。
- (void)tpNativeAdOneLayerLoaded:(NSDictionary *)adInfo;
///当每个广告源加载失败后会都会回调一次,返回三方源的错误信息
- (void)tpNativeAdOneLayerLoad:(NSDictionary *)adInfo didFailWithError:(NSError *)error;
///加载流程全部结束
- (void)tpNativeAdAllLoaded:(BOOL)success;
///视频贴片类型播放完成回调 v6.8.0+
- (void)tpNativePasterDidPlayFinished:(NSDictionary *)adInfo;
///开始播放 v7.8.0+
- (void)tpNativeAdVideoPlayStart:(NSDictionary *)adInfo;
///播放结束 v7.8.0+
- (void)tpNativeAdVideoPlayEnd:(NSDictionary *)adInfo;

5. 进入广告场景#

广告场景调用时机和用途广告场景说明

[self.nativeAd entryAdScenario:@"您的广告场景ID"];

6. 接入参考#

参考:TradPlusAdNativeViewController

7.自定义view 渲染方式(可选)#

//初始化自定义UIView
TPNativeTemplate *nativeView = [[NSBundle mainBundle] loadNibNamed:@"TPNativeView" owner:self options:nil].lastObject;
nativeView.frame = self.adView.bounds;
[nativeView layoutIfNeeded];
//自行设置渲染元素 以及 元素是否可点击
TradPlusNativeRenderer *nativeRenderer = [[TradPlusNativeRenderer alloc] init];
[nativeRenderer setTitleLable:nativeView.titleLabel canClick:YES];
[nativeRenderer setTextLable:nativeView.textLabel canClick:YES];
[nativeRenderer setCtaLable:nativeView.ctaLabel canClick:YES];
[nativeRenderer setIconView:nativeView.iconImageView canClick:YES];
[nativeRenderer setMainImageView:nativeView.mainImageView canClick:YES];
[nativeRenderer setAdChoiceImageView:nativeView.adChoiceImageView canClick:YES];
[nativeRenderer setAdView:nativeView canClick:YES];
//设置Renderer 及 subview
//sceneId为广告场景ID
[self.nativeAd showADWithNativeRenderer:nativeRenderer subview:self.adView sceneId:nil];

自动布局相关示例可参考:

8.原生视频贴片(v6.8.0+)#

  • 原生视频贴片使用方式及接入方式和原生广告一致。
  • 其中部分视频贴片广告支持使用自定义播放器进行展示。

使用自定义播放器需要使用 v6.8.0+新增API 来进行获取资源并进行展示。

1. 首先通过新增API getReadyNativeObject 获取一个已缓存广告对象

⚠️注意

  • 从此API获取到缓存时,TPSDK同时会移除对此缓存的引用
  • 获取后,需要开发者自行保留好此对象的引用
  • 调用API返回nil时,则说明已经没有任何缓存了。
  • 一般情况下不要连续调用此API。
- (TradPlusAdNativeObject *)getReadyNativeObject;

2. 判断资源是否支持自定义播放器

TradPlusAdNativeObject 对象包含show方法及三方资源信息

开发者可以通过 TradPlusAdNativeObject 中的 customVideoPaster 来判断资源是否支持使用自定义播放器。
customVideoPaster = nil,则说明资源不支持使用自定义播放器。

/// 显示广告
/// @param renderingViewClass renderingViewClass
/// @param subView 渲染后会添加到此view上
/// @param sceneId 场景ID 没有则设置为nil
- (void)showADWithRenderingViewClass:(Class)renderingViewClass
subview:(UIView *)subView
sceneId:(nullable NSString *)sceneId;
/// 显示广告
/// @param renderer 自定义renderer
/// @param subView 渲染后会添加到此view上
/// @param sceneId 场景ID 没有则设置为nil
- (void)showADWithNativeRenderer:(TradPlusNativeRenderer *)renderer
subview:(UIView *)subView
sceneId:(nullable NSString *)sceneId;
///TP封装的Native资源
@property (nonatomic,readonly)TradPlusAdRes *res;
///三方的资源对象
@property (nonatomic,readonly)id customObject;
///三方配置信息
@property (nonatomic,readonly)NSDictionary *config;
///广告位ID
@property (nonatomic,readonly)NSString *adunit_id;
///广告源ID
@property (nonatomic,readonly)NSString *adsource_placement_id;
///三方广告网络对应的编号
@property (nonatomic,readonly)MSThirdNetwork channel_id;
///三方广告网络名称
@property (nonatomic,readonly)NSString *channel_name;
///是否是模版
@property (nonatomic,readonly)BOOL is_adapter_template_render;
///支持自定义播放器的贴片
@property (nonatomic,readonly)TradPlusAdCustomVideoPaster *customVideoPaster;

3. 获取视频地址,实现各埋点回调

TradPlusAdCustomVideoPaster 对象包含视频资源信息及埋点回调接口

@property (nonatomic,readonly)NSString *videoUrl;
@property (nonatomic,readonly)NSInteger videoDuration;
- (void)startPlayVideo;
- (void)didStartPlayVideoWithVideoDuration:(NSTimeInterval)duration;
- (void)didAutoStartPlayWithVideoDuration:(NSTimeInterval)duration;
- (void)didFinishVideo;
- (void)didPauseVideoWithCurrentDuration:(NSTimeInterval)duration;
- (void)didResumeVideoWithCurrentDuration:(NSTimeInterval)duration;
- (void)didBreakVideoWithCurrentDuration:(NSTimeInterval)duration;
- (void)didClickVideoViewWithCurrentDuration:(NSTimeInterval)duration;
- (void)didPlayFailedWithError:(NSError *)error;
- (void)didPlayStartFailedWithError:(NSError *)error;
- (void)didPlayBufferStart;
- (void)didPlayBufferEnd;

具体实现可以参照Demo NativePaster

广告平台特殊配置说明#

StartApp#

开发者可以通过一下代码设置startapp原生请求的图片尺寸

self.native.dicCustomValue = @{@"startapp_primaryImageSize":@(3),@"startapp_secondaryImageSize":@(4)};
参数说明
startapp_primaryImageSize主图;
默认值:4 (1200X628)
0 - image size of 72X72
1 - image size of 100X100
2 - image size of 150X150
3 - image size of 340X340
4 - image size of 1200X628
startapp_secondaryImageSize副图;
默认值:2 (150X150)
0 - image size of 72X72
1 - image size of 100X100
2 - image size of 150X150
3 - image size of 340X340

三方文档说明