Android iOS Unity JS API 常见问题

原生模板2.0广告

简介

基本信息

原生模板2.0广告是腾讯广告推出的一种自动化展现的原生广告,图文广告零门槛不需要申请权限就可以使用,视频广告需要申请对应的权限。开通对应的权限后,在新建广告位时支持只出图文广告或只出视频广告,也支持图文和视频广告混出。但为了保证广告位的填充率,当您有接入视频广告需求的时候,建议尽量选择图文和视频广告混出。

目前模板2.0功能处于内测中,请开发者联系对应商务开通权限。

权限等级:需申请

模板2.0方式简介:模板2.0是优量汇推出的全新功能,是旧模板渲染方式的升级优化。模板2.0在保持旧模板既有的不需要考虑渲染样式、数据上报、广告交互问题等优势的同时,新增以下优势:

适用场景:如果我们提供的模板2.0广告样式符合您的需求,建议直接使用该接口

分类
原生广告(模板2.0方式)有11种广告样式可选:

上图下文
(图片尺寸1280×720)
上文下图
(图片尺寸1280×720)
左图右文
(图片尺寸1280×720)
左文右图
(图片尺寸1280×720)
双图双文
(大图尺寸1280×720)
三小图双文
(图片尺寸1280×720)
横版纯图片
(图片尺寸1280*720)
竖版纯图片
(图片尺寸1080×1920)
单图单文-文字浮层
(大图尺寸1280×720)
上文下图-文字浮层
(图片尺寸1280×720)
上图下文-文字浮层
(图片尺寸1280*720)

注意:接入代码和 API 均只适用于原生模板2.0广告位。误用其他广告位 ID 使用原生模板广告的接口,则会导致无广告返回。

主要API

生命周期事件回调

您可以实现全部或部分 GDTNativeExpressProAdManagerDelegate\GDTNativeExpressProAdViewDelegate,以跟踪点击成功或者原生模板2.0广告请求失败等广告生命周期事件。

@protocol GDTNativeExpressProAdManagerDelegate <NSObject>
@optional
- (void)gdt_nativeExpressProAdSuccessToLoad:(GDTNativeExpressProAdManager *)adManager views:(NSArray<__kindof GDTNativeExpressProAdView *> *)views;
- (void)gdt_nativeExpressProAdFailToLoad:(GDTNativeExpressProAdManager *)adManager error:(NSError *)error;
@end

@protocol GDTNativeExpressProAdViewDelegate <NSObject>
@optional
- (void)gdt_NativeExpressProAdViewRenderSuccess:(GDTNativeExpressProAdView *)nativeExpressProAdView;
- (void)gdt_NativeExpressProAdViewRenderFail:(GDTNativeExpressProAdView *)nativeExpressProAdView;
- (void)gdt_NativeExpressProAdViewExposure:(GDTNativeExpressProAdView *)nativeExpressProAdView;
- (void)gdt_NativeExpressProAdViewClicked:(GDTNativeExpressProAdView *)nativeExpressProAdView;
- (void)gdt_NativeExpressProAdViewClosed:(GDTNativeExpressProAdView *)nativeExpressProAdView;
- (void)gdt_NativeExpressProAdViewWillPresentScreen:(GDTNativeExpressProAdView *)nativeExpressProAdView;
- (void)gdt_NativeExpressProAdViewDidPresentScreen:(GDTNativeExpressProAdView *)nativeExpressProAdView;
- (void)gdt_NativeExpressProAdViewWillDissmissScreen:(GDTNativeExpressProAdView *)nativeExpressProAdView;
- (void)gdt_NativeExpressProAdViewDidDissmissScreen:(GDTNativeExpressProAdView *)nativeExpressProAdView;
- (void)gdt_NativeExpressProAdViewApplicationWillEnterBackground:(GDTNativeExpressProAdView *)nativeExpressProAdView;
- (void)gdt_NativeExpressProAdView:(GDTNativeExpressProAdView *)nativeExpressProAdView playerStatusChanged:(GDTMediaPlayerStatus)status;
@end

在实现上述事件回调之前,请务必先设置delegate:

Objective-C
self.adManager.delegate = self;


GDTNativeExpressProAdView *adView = (GDTNativeExpressProAdView *)obj;
adView.controller = self;
adView.delegate = self;
[adView render];

回调函数列表

回调函数名 回调函数含义
gdt_nativeExpressProAdSuccessToLoad:views 拉取原生模板2.0广告成功
gdt_nativeExpressProAdFailToLoad:error 拉取原生模板2.0广告失败
gdt_NativeExpressProAdViewRenderSuccess 原生模板2.0广告渲染成功
gdt_NativeExpressProAdViewRenderFail 原生模板2.0广告渲染失败
gdt_NativeExpressProAdViewExposure 原生模板2.0广告曝光回调
gdt_NativeExpressProAdViewClicked 原生模板2.0广告点击回调
gdt_NativeExpressProAdViewClosed 原生模板2.0广告被关闭
gdt_NativeExpressProAdViewWillPresentScreen 点击原生模板2.0广告,即将弹出全屏广告页
gdt_NativeExpressProAdViewDidPresentScreen 点击原生模板2.0广告,弹出全屏广告页
gdt_NativeExpressProAdViewWillDissmissScreen 全屏广告页将要关闭
gdt_NativeExpressProAdViewDidDissmissScreen 全屏广告页已经关闭
gdt_NativeExpressProAdViewApplicationWillEnterBackground 当点击应用下载或者广告调用系统程序打开时调用
gdt_NativeExpressProAdView:playerStatusChanged 原生模板2.0视频广告 player 播放状态更新回调

其中,视频播放过程中,会有如下几种状态

枚举变量 枚举含义
GDTMediaPlayerStatusInitial 初始状态
GDTMediaPlayerStatusLoading 加载中
GDTMediaPlayerStatusStarted 开始播放
GDTMediaPlayerStatusPaused 用户行为导致暂停
GDTMediaPlayerStatusStoped 播放停止
GDTMediaPlayerStatusError 播放出错

接入代码示例

加载并显示原生模板2.0广告

1.在您的试图控制器中导入头文件,声明您会实现GDTNativeExpressAdDelegate协议:

Objective-C
#import "GDTNativeExpressProAdManager.h"
#import "GDTNativeExpressProAdView.h"
@interface NativeExpressProAdViewController ()<GDTNativeExpressProAdManagerDelegate, GDTNativeExpressProAdViewDelegate, UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, strong) NSArray *expressAdViews;
@property (nonatomic, strong) GDTNativeExpressProAdManager *adManager;

2.在试图控制器的ViewDidLoad中的实现文件中初始化并加载广告数据。如果您的广告是视频和图文混出类型,则您可以在这里定义视频播放器的属性:

Objective-C
- (void)viewDidLoad
{
   [super viewDidLoad];
    GDTAdParams *adParams = [[GDTAdParams alloc] init]; // 自定义参数
    // 配置模板宽度,高度自动自适应
    adParams.adSize = CGSizeMake(self.widthSliderValue, self.heightSliderValue);
    // 配置视频播放属性
    adParams.maxVideoDuration = self.maxVideoDuration;
    adParams.minVideoDuration = self.minVideoDuration;
    adParams.detailPageVideoMuted = self.videoDetailPageVideoMuted;
    adParams.videoMuted = self.videoMuted;
    adParams.videoAutoPlayOnWWAN = self.videoAutoPlay;
    self.adManager = [[GDTNativeExpressProAdManager alloc] initWithPlacementId:@"YOUR_PLACEMENT_ID"
                                                                           adPrams:adParams];
    self.adManager.delegate = self;
    [self.adManager loadAd:(NSInteger)self.adCountSliderValue];
}

3.将YOUR_PLACEMENT_ID替换成你自己的PLACEMENTID。

4.实现获取广告成功的回调,在回调里做数据处理,并且为原生模板2.0广告的展现做准备。这里以展示在TableView中为例。

Objective-C
- (void)gdt_nativeExpressProAdSuccessToLoad:(GDTNativeExpressProAdManager *)adManager views:(NSArray<__kindof GDTNativeExpressProAdView *> *)views
{
    self.expressAdViews = [NSMutableArray arrayWithArray:views];
    if (self.expressAdViews.count) {
        [self.expressAdViews enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            GDTNativeExpressProAdView *adView = (GDTNativeExpressProAdView *)obj;
            adView.controller = self;
            adView.delegate = self;
            // 拉取成功后渲染广告 View
            [adView render];
        }];
    }
    [self.tableView reloadData];
}

- (void)gdt_NativeExpressProAdViewRenderSuccess:(GDTNativeExpressProAdView *)nativeExpressAdView
{
    // 渲染成功刷新 tableView
    [self.tableView reloadData];
}

5.在您要展示的视图中对获得的原生模板2.0广告进行展示。这里以展示在TableView中为例。这里推荐开发者使用SDK给出的推荐尺寸。完整参考代码如下:

Objective-C

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row % 2 == 0) {
        UIView *view = [self.expressAdViews objectAtIndex:indexPath.row / 2];
        return view.bounds.size.height;
    }
    else {
        return 44;
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = nil;
    if (indexPath.row % 2 == 0) {
        cell = [self.tableView dequeueReusableCellWithIdentifier:@"nativeexpresscell" forIndexPath:indexPath];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        UIView *subView = (UIView *)[cell.contentView viewWithTag:1000];
        if ([subView superview]) {
            [subView removeFromSuperview];
            subView = nil;
        }
        UIView *view = [self.expressAdViews objectAtIndex:indexPath.row / 2];
        view.tag = 1000;
        [cell.contentView addSubview:view];
        cell.accessibilityIdentifier = @"nativeTemp_even_ad";
    } else {
        cell = [self.tableView dequeueReusableCellWithIdentifier:@"splitnativeexpresscell" forIndexPath:indexPath];
        cell.backgroundColor = [UIColor clearColor];
        cell.accessibilityIdentifier = @"nativeTemp_odd_ad";
    }
    return cell;
}

在不展示原生模板2.0广告时执行调试

在您的ViewController里实现如下回调,处理原生模板2.0广告加载失败的问题:

Objective-C
- (void)gdt_NativeExpressProAdViewRenderFail:(GDTNativeExpressProAdView *)nativeExpressProAdView
{
    NSLog(@"Express Ad Render Fail");
}

- (void)gdt_nativeExpressProAdFailToLoad:(GDTNativeExpressProAdManager *)adManager error:(NSError *)error
{
    NSLog(@"%s",__FUNCTION__);
    NSLog(@"Express Ad Load Fail : %@",error);
}

多阶底价能力

接入多阶底价能力分2步:

step1:

找优量汇运营同学开通广告位的多阶底价权限并提供底价配置信息;

step2:

通过GDTNativeExpressProAdView类的eCPMLevel属性查看当前广告对应的底价层级。

/**
 返回广告的eCPM等级

 @return 成功返回一个包含数字的string,比如@"2"表示底价等级为2,@""或nil表示无权限或后台异常
 */
@property (nonatomic, readonly) NSString *eCPMLevel;

Copyright © 1998 - 2020 Tencent Inc. All Rights Reserved.
腾讯公司 版权所有 | 加入优量汇