平台模板2.0
简介
权限等级:需申请
平台模板2.0广告:即4.332.1202版本及以前版本中原生模板2.0广告
前提要求:Android SDK 4.230.1100及以上版本
需要在开发者平台创建模板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 使用平台模板广告的接口,则会导致无广告返回。
接入代码示例
注意:需要在开发者平台创建平台模版2.0广告位,平台模版广告位不会返回广告!!!
仅展示部分代码,完整代码请参考 GDTUnionDemo 工程
public class NativeExpressAd2SimpleDemoActivity extends Activity implements
View.OnClickListener, NativeExpressAD2.AdLoadListener {
private FrameLayout mAdContainer; // 展示广告的广告位
private NativeExpressAD2 mNativeExpressAD2;
private NativeExpressADData2 mNativeExpressADData2;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
mAdContainer = findViewById(R.id.express_2_ad_container);
// 创建广告
mNativeExpressAD2 = new NativeExpressAD2(this, // context
/*广告位id*/,
this // 广告状态监听的回调,NativeExpressAD2.AdLoadListener
);
loadAd();
}
@Override
protected void onDestroy() {
super.onDestroy();
// 使用完了每一个 NativeExpressADData2 之后都要释放掉资源
destroyAd();
}
// 加载广告,设置条件
private void loadAd() {
mNativeExpressAD2.setAdSize(300, 300); // 单位dp
// 如果您在平台上新建平台模板2.0广告位时,选择了支持视频,那么可以进行个性化设置(可选)
VideoOption2.Builder builder = new VideoOption2.Builder();
/**
* 如果广告位支持视频广告,强烈建议在调用loadData请求广告前设置setAutoPlayPolicy,有助于提高视频广告的eCPM值 <br/>
* 如果广告位仅支持图文广告,则无需调用
*/
builder.setAutoPlayPolicy(VideoOption2.AutoPlayPolicy.WIFI) // WIFI 环境下可以自动播放视频
.setAutoPlayMuted(true) // 自动播放时为静音
.setDetailPageMuted(false) // 视频详情页播放时不静音
.setMaxVideoDuration(0) // 设置返回视频广告的最大视频时长(闭区间,可单独设置),单位:秒,默认为 0 代表无限制,合法输入为:5<=maxVideoDuration<=61. 此设置会影响广告填充,请谨慎设置
.setMinVideoDuration(0); // 设置返回视频广告的最小视频时长(闭区间,可单独设置),单位:秒,默认为 0 代表无限制, 此设置会影响广告填充,请谨慎设置
mNativeExpressAD2.setVideoOption2(builder.build());
mNativeExpressAD2.loadAd(1);
destroyAd();
}
/**
* 释放前一个 NativeExpressADData2 的资源
*/
private void destroyAd() {
if (mNativeExpressADData2 != null) {
Log.d(TAG, "destroyAD");
mNativeExpressADData2.destroy();
}
}
/**
* 广告加载成功回调
* @param adDataList
*/
@Override
public void onLoadSuccess(List<NativeExpressADData2> adDataList) {
Log.i(TAG, "onLoadSuccess: size " + adDataList.size());
// 渲染广告
renderAd(adDataList);
}
/**
* 广告加载失败回调
* @param error
*/
@Override
public void onNoAD(AdError error) {
@SuppressLint("DefaultLocale")
String errorMsg = String
.format("onNoAD, error code: %d, error msg: %s", error.getErrorCode(), error.getErrorMsg());
Log.i(TAG, "onNoAD: " + errorMsg);
Toast.makeText(this, errorMsg, Toast.LENGTH_SHORT).show();
}
/**
* 渲染广告
* @param adDataList
*/
private void renderAd(List<NativeExpressADData2> adDataList) {
if (adDataList.size() > 0) {
mAdContainer.removeAllViews();
mNativeExpressADData2 = adDataList.get(0);
Log.i(TAG, "renderAd: " + " eCPM level = " +
mNativeExpressADData2.getECPMLevel() + " Video duration: " + mNativeExpressADData2.getVideoDuration());
mNativeExpressADData2.setAdEventListener(new AdEventListener() {
@Override
public void onClick() {
Log.i(TAG, "onClick: " + mNativeExpressADData2);
}
@Override
public void onExposed() {
Log.i(TAG, "onExposed: " + mNativeExpressADData2);
}
@Override
public void onRenderSuccess() {
Log.i(TAG, "onRenderSuccess: " + mNativeExpressADData2);
mAdContainer.removeAllViews();
if (mNativeExpressADData2.getAdView() != null) {
mAdContainer.addView(mNativeExpressADData2.getAdView());
}
}
@Override
public void onRenderFail() {
Log.i(TAG, "onRenderFail: " + mNativeExpressADData2);
}
@Override
public void onAdClosed() {
Log.i(TAG, "onAdClosed: " + mNativeExpressADData2);
mAdContainer.removeAllViews();
mNativeExpressADData2.destroy();
}
});
mNativeExpressADData2.setMediaListener(new MediaEventListener() {
@Override
public void onVideoCache() {
Log.i(TAG, "onVideoCache: " + mNativeExpressADData2);
}
@Override
public void onVideoStart() {
Log.i(TAG, "onVideoStart: " + mNativeExpressADData2);
}
@Override
public void onVideoResume() {
Log.i(TAG, "onVideoResume: " + mNativeExpressADData2);
}
@Override
public void onVideoPause() {
Log.i(TAG, "onVideoPause: " + mNativeExpressADData2);
}
@Override
public void onVideoComplete() {
Log.i(TAG, "onVideoComplete: " + mNativeExpressADData2);
}
@Override
public void onVideoError() {
Log.i(TAG, "onVideoError: " + mNativeExpressADData2);
}
});
mNativeExpressADData2.render();
}
}
}
主要 API
NativeExpressAD2
- com.qq.e.ads.nativ.express2.NativeExpressAD2:
平台模板2.0广告入口,用于初始化并加载广告数据。
方法名 | 方法介绍 |
---|---|
NativeExpressAD2(Context context, String posID, AdLoadListener listener) | 平台模板2.0广告构造函数,context 是指上下文环境,这里必须传入开发者的 Activity,posID 是广告位 ID,listener 指定广告状态回调接口。 |
loadAd(int count) | 加载广告,count 指定期望加载的广告数量,根据广告填充情况不同,返回不大于 count 数量的广告 |
setAdSize(int width, int height) | 设置广告的大小,宽度必须要传入,高度小于等于0时自适应,如果宽度传入小于等于0,则会赋值为当前屏幕宽度 |
setVideoOption2(VideoOption2 videoOption) | (可选方法)指定视频广告的播放配置,配置包含: 1. autoPlayPolicy,指定不同网络下的视频播放策略,可选项包括:AutoPlayPolicy.WIFI(WiFi 网络自动播放,4G 网络手动点击播放),AutoPlayPolicy.ALWAYS(WiFi 和4G 网络都自动播放),AutoPlayPolicy.NEVER 永远不会自动播放。默认值为 AutoPlayPolicy.ALWAYS。 注:AutoPlayPolicy.ALWAYS 的配置能够一定程度优化广告收益 2. autoPlayMuted,指定视频播放时是否静音,可选项包括:true(播放时静音),false(播放时有声),默认值为 true。 3. detailPageMuted,指定视频详情页是否静音播放,可选项包括:true(视频详情页静音播放),false(视频详情页有声播放),默认值为 false。 4. minVideoDuration 设置返回视频广告的最小视频时长(闭区间,可单独设置),单位:秒 此设置会影响广告填充,请谨慎设置 5. maxVideoDuration 设置返回视频广告的最大视频时长(闭区间,可单独设置),单位:秒,合法输入为:5<=maxVideoDuration<=61. 此设置会影响广告填充,请谨慎设置 |
setBrowserType(BrowserType bt) | 指定普链广告点击后用于展示落地页的浏览器类型,可选项包括:InnerBrowser(APP 内置浏览器),Sys(系统浏览器),Default(默认),SDK 按照默认逻辑选择 |
setDownAPPConfirmPolicy(DownAPPConfirmPolicy policy) | 指定点击 APP 广告后是否展示二次确认,可选项包括 Default(wifi 不展示,非wifi 展示),NoConfirm(所有情况不展示)4.330.1200及以后版本支持工信部合规弹窗,在显示工信部弹窗时,该设置无效,工信部弹窗会替换二次确认的弹窗 |
AdLoadListener
- com.qq.e.ads.nativ.express2.NativeExpressAD2.AdLoadListener:
平台模板2.0广告加载、渲染、点击状态的回调。
方法名 | 方法介绍 |
---|---|
onNoAD(AdError error) | 无广告填充 |
onLoadSuccess(List<NativeExpressADData2> adDataList) | 广告数据加载成功,返回了可以用来展示广告的 NativeExpressADData2,但是想让广告曝光还需要调用 NativeExpressADData2 的 render 方法 |
AdEventListener
- com.qq.e.ads.nativ.express2.AdEventListener
方法名 | 方法介绍 |
---|---|
onRenderFail() | NativeExpressADData2 渲染广告失败 |
onRenderSuccess() | NativeExpressADData2 渲染广告成功 |
onExposed() | 广告曝光 |
onClick() | 广告点击 |
onAdClosed() | 广告被关闭,将不再显示广告,此时广告对象已经释放资源,不可以再次用来展示了 |
MediaEventListener
- com.qq.e.ads.nativ.express2.MediaEventListener
平台模板2.0视频广告播放状态回调接口,专用于带有视频素材的广告对象
方法名 | 方法介绍 |
---|---|
onVideoCache() | 视频下载完成 |
onVideoStart() | 视频开始播放 |
onVideoResume() | 视频从暂停恢复播放 |
onVideoPause() | 视频暂停 |
onVideoComplete() | 视频播放结束时触发 |
onVideoError() | 视频播放时出现错误 |
NativeExpressADData2
- com.qq.e.ads.nativ.express2.NativeExpressADData2:
方法名 | 方法介绍 |
---|---|
setAdEventListener(AdEventListener eventListener) | 设置监听器,监听广告的点击,曝光,渲染成功/失败,关闭。 |
destroy() | 释放 NativeExpressADData2 占用的资源,当不再展示广告时一定要调用这个方法去释放资源 |
render() | 渲染广告,渲染结果会在 AdEventListener 回调,如果不调用这个方法,NativeExpressADData2 就不会把广告图片等资源加载进来,也不会产生曝光等收益 |
setMediaListener(MediaEventListener mediaListener) | 设置监听器,监听视频广告的状态变化 |
View getAdView() | 返回广告的 View,注意:这个方法只能在 AdEventListener 的 onRenderSuccess 回调之后才能调用,否则返回结果为 null。 |
boolean isVideoAd() | 返回当前广告是否为视频广告。 |
String getECPMLevel() | 获取本条广告实时的eCMP价格层级标签,每个层级标签对应线下预定的eCPM价格范围,成功返回一个包含数字的字符串,比如“1”,无权限调用该接口或后台异常会返回空字符串 |
int getVideoDuration() | 获取视频广告的时长 |
接入注意事项
如果您的平台模板2.0广告位支持视频,您会在新建广告位时在广告素材栏看到视频选项。您需要注意以下几点:
- 您可以按需进行视频广告播放的个性化配置。
- 您需要处理好 Activity 的运行时变更,由于视频广告可以跟随手机屏幕的方向旋转和全屏播放,请处理好 Activity 的运行时变更(最简单的方式就是在 AndroidManifest 文件中给您的 Activity 加上 android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 属性),不要让播放视频广告的 Activity 被销毁重建,具体代码可以参考 GDTUnionDemo。
- 如果广告位支持视频广告,在拉取广告前,调用
setVideoOption2
设置视频广告的播放策略。