原生拼接开屏
一、集成建议
- 基于原生广告拼接开屏
- 创建广告位时,样式选择选择原生广告,模版选择原生拼接开屏。
- 如果三方提供的是模版类型的广告,不支持调整素材的位置。
二、TradPlusNativeSplash API说明
1. 加载、展示广告
- 参数说明
参数 | 说明 |
---|---|
AdUnitID | AdUnitID为TradPlus后台创建的广告位ID,SDK将根据广告位ID拉取配置并请求广告 |
sceneId | sceneId为广告场景ID是可选参数,默认为nil,开发者需和- (void)showAdWithSceneId:(nullable NSString *)sceneId; 配套使用如需使用广告场景请参考: 广告场景说明 |
window | 广告展示时的window 注:确保展示时传入的window是keyWindow,否则可能会出现广告展示无效 |
- 方法说明
方法 | 说明 |
---|---|
- (void)setAdUnitID:(NSString *)adUnitID; | 设置广告位ID |
- (void)loadAd; | 请求该广告位原生拼接开屏广告 |
- (BOOL)isReady; | 检测该广告位是否有可用广告true 为有可用广告flase 为无可用广告 |
- (void)entryAdScenario:(nullable NSString *)sceneId; | 进入广告场景 广告场景是用来统计进入广告场景的次数和进入场景后展示广告的次数,所以请在准确的位置调用。 |
- (void)showInWindow:(UIWindow *)window; | 展示该广告位原生拼接开屏广告 通过自定义renderer方式 |
- (void)showInSubView:(UIView *)subView; | 展示该广告位原生拼接开屏广告,设置添加到指定view上 |
2. 监听回调
- 参数说明
参数 | 说明 |
---|---|
adInfo | 广告位ID、三方广告平台、ecpm等信息,具体请参考回调信息说明 |
error | 返回的是TP封装的错误信息:详见: 错误码说明 |
TradPlusADNativeSplashDelegate
回调接口及说明
方法 | 说明 |
---|---|
- (UIViewController *)viewControllerForPresentingModalView; | 为三方提供rootviewController 用于点击广告后的操作 |
- (void)tpNativeSplashAdDidLoaded:(NSDictionary *)adInfo; | 原生拼接开屏广告加载完成 首个广告源加载成功时回调 一次加载流程只会回调一次 |
- (void)tpNativeSplashAdLoadFailWithError:(NSError *)error; | 原生拼接开屏广告加载失败 |
- (void)tpNativeSplashAdImpression:(NSDictionary *)adInfo; | 原生拼接开屏广告展示成功 三方认可的有效展示 |
- (void)tpNativeSplashAdShow:(NSDictionary *)adInfo didFailWithError:(NSError *)error; | 原生拼接开屏广告展示失败 |
- (void)tpNativeSplashAdClicked:(NSDictionary *)adInfo; | 原生拼接开屏广告被点击 |
- (void)tpNativeSplashAdClosed:(NSDictionary *)adInfo; | 原生拼接开屏广告关闭 |
TradPlusADNativeSplashDelegate
回调接口及说明(可选)
方法 | 说明 |
---|---|
- (void)tpNativeSplashAdStartLoad:(NSDictionary *)adInfo; | v7.6.0+新增 开始加载流程 |
- (void)tpNativeSplashAdLoadStart:(NSDictionary *)adInfo; | v7.6.0+已废弃 请使用 tpNativeSplashAdOneLayerStartLoad: |
- (void)tpNativeSplashAdOneLayerStartLoad:(NSDictionary *)adInfo; | 当每个广告源开始加载时会都会回调一次 |
- (void)tpNativeSplashAdIsLoading:(NSDictionary *)adInfo; | v8.7.0+新增 调用load之后如果收到此回调,说明广告位仍处于加载状态,无法触发新的一轮广告加载。 |
- (void)tpNativeSplashAdBidStart:(NSDictionary *)adInfo; | bidding开始 |
- (void)tpNativeSplashAdBidEnd:(NSDictionary *)adInfo success:(BOOL)success; | v7.6.0+已废弃 请使用 tpNativeSplashAdBidEnd:error: |
- (void)tpNativeSplashAdBidEnd:(NSDictionary *)adInfo error:(NSError *)error; | bidding结束 error = nil 表示成功 |
- (void)tpNativeSplashAdOneLayerLoaded:(NSDictionary *)adInfo; | 当每个广告源加载成功后会都会回调一次 |
- (void)tpNativeSplashAdOneLayerLoad:(NSDictionary *)adInfo didFailWithError:(NSError *)error; | 当每个广告源加载失败后会都会回调一次,返回三方源的错误信息 |
- (void)tpNativeSplashAdAllLoaded:(BOOL)success; | 加载流程全部结束 |
- (void)tpNativeSplashAdClickSkip:(NSDictionary *)adInfo; | 点击了跳过 |
- (void)tpNativeSplashAdShowSkip:(NSDictionary *)adInfo; | 跳过按钮显示 |
- (void)tpNativeSplashAdCountDown:(NSDictionary *)adInfo progress:(NSInteger)progress; | 倒计时 |
- (void)tpNativeSplashAdVideoPlayStart:(NSDictionary *)adInfo; | v7.8.0+新增 视频播放开始 |
- (void)tpNativeSplashAdVideoPlayEnd:(NSDictionary *)adInfo; | v7.8.0+新增 视频播放结束 |
三、示例代码
请参考:TradPlusAdNativeSplashViewController
1. 初级用法
#import <TradPlusAds/TradPlusNativeSplash.h>
@interface TradPlusAdNativeSplashViewController ()<TradPlusADNativeSplashDelegate>
@property (nonatomic,strong)TradPlusNativeSplash *nativeSplash;
@end
@implementation TradPlusAdNativeSplashViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.nativeSplash = [[TradPlusNativeSplash alloc] init];
//设置广告位ID
[self.splashAdView setAdUnitID:@"在TP平台创建的广告位ID"];
//设置回调
self.splashAdView.delegate = self;
//加载广告需要一些时间,可以在展示广告前提前加载好广告
[self.splashAdView loadAd];
}
- (void)showNativeSplashAd
{
[self.splashAdView showInWindow:window];
//设置添加到指定view上
//[self.splashAdView showInSubView:subview];
}
#pragma mark - TradPlusADNativeDelegate
//原生拼接开屏广告加载完成 首个广告源加载成功时回调 一次加载流程只会回调一次
- (void)tpNativeSplashAdDidLoaded:(NSDictionary *)adInfo
{
}
//原生拼接开屏广告加载失败
- (void)tpNativeSplashAdLoadFailWithError:(NSError *)error
{
}
//原生拼接开屏广告展现
- (void)tpNativeSplashAdImpression:(NSDictionary *)adInfo
{
}
//原生拼接开屏广告展现失败
- (void)tpNativeSplashAdShow:(NSDictionary *)adInfo didFailWithError:(NSError *)error
{
}
//原生拼接开屏广告被点击
- (void)tpNativeSplashAdClicked:(NSDictionary *)adInfo
{
}
//原生拼接开屏广告关闭
- (void)tpNativeSplashAdClosed:(NSDictionary *)adInfo
{
}
2. 高级用法-自定义模版方式(可选)
RenderingViewClass,继承UIView,可参照 Demo
[self.splashAdView showWithRenderingViewClass:[RenderingViewClass class] window:window];
- 设置添加到指定view上
[self.splashAdView showWithRenderingViewClass:[RenderingViewClass class] subView:subView];
3. 高级用法-自定义view方式(可选)
TPNativeTemplate *adView = [[NSBundle mainBundle] loadNibNamed:@"TPNativeTemplate" owner:self options:nil].lastObject;
adView.frame = [UIScreen mainScreen].bounds;
[adView layoutIfNeeded];
//自行设置渲染元素 以及 元素是否可点击
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 setMainImageView:adView.mainImageView canClick:YES];
[nativeRenderer setAdChoiceImageView:adView.adChoiceImageView canClick:YES];
[nativeRenderer setAdView:adView canClick:YES];
[self.splashAdView showWithRenderer:nativeRenderer window:window];
- 设置添加到指定view上
TPNativeTemplate *adView = [[NSBundle mainBundle] loadNibNamed:@"TPNativeTemplate" owner:self options:nil].lastObject;
adView.frame = subView.bounds;
[adView layoutIfNeeded];
//自行设置渲染元素 以及 元素是否可点击
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 setMainImageView:adView.mainImageView canClick:YES];
[nativeRenderer setAdChoiceImageView:adView.adChoiceImageView canClick:YES];
[nativeRenderer setAdView:adView canClick:YES];
[self.splashAdView showWithRenderer:nativeRenderer subView:subView];