跳到主要内容

原生广告

一、注意事项

  • 禁止在onNativeLoadFailed回调中执行广告加载的方法,否则会引起死循环。
  • 禁止在onNativeLoaded回调中直接执行广告展示的方法。SDK有广告过期自动补充功能。如果在onNativeLoaded回调中执行展示,开发者会无法精准控制广告展示的时机。
  • 根据所支持的广告平台,原生广告分为模板类型和自渲染类型。
    • 模板类型的广告,三方广告平台会直接返回一个完整的view,开发者只需要正常调用就可以展示。
    • 自渲染类型的广告,三方广告平台是返回广告素材,使用开发者传入的布局进行展示。三方后台的类型选择需要和TP后台一致,否则会请求失败。

二、集成步骤

1、请求广告

//配置参数extraMap
var extra :TPNativeExtra ={
x:x,
y:y,
height:height,
width:width,
adPosition:this.positionMode,
customMap:customMap, //流量分组
localParams:localParams,//local自定义Map
openAutoLoadCallback : false,//开启一次loadNativeAd对应一次onAdLoaded回调,默认关闭
maxWaitTime:waitTime,
};
TradPlusNative.loadNativeAd("在TP平台创建的广告位ID",extra);

2、检查是否有可用广告

  • 开发者在监听到onAdLoaded回调后调用。
  • 建议开发者展示广告前,调用该API判断是否有可用广告,有广告再调用show方法
  • true表示有可用广告,false表示暂时无可用广告
  • 当调用splashAdReady返回false时,sdk会重新请求广告,无需开发者再次调用load方法。
var ready = TradPlusNative.nativeAdReady("在TP平台创建的广告位ID");

3、进入广告场景

  • 进入广告场景时传入sceneId,展示广告时也需传入sceneId,否则会影响统计。
TradPlusNative.entryNativeAdScenario("在TP平台创建的广告位ID","sceneId");

4、展示广告

使用TradPlus默认内置布局进行展示

TradPlusNative.showNativeAd("在TP平台创建的广告位ID","sceneId");

传入自定义布局

TradPlusNative.showNativeAd("在TP平台创建的广告位ID","sceneId","布局文件的className");
Android
  • 默认布局文件 sdk/Android/TradPlusSDK/res/layout/cocos_native_ad_list_item.xml ,开发者可以用cocos_native_ad_list_item.xml进行UI修改,注意不要修改布局文件中的android:id: 资源ID,修改后会导致自渲染广告的元素无法找到对应id而展示失败
  • 自定义布局的className不能跟默认布局的className一致,相同的classname会导致打包失败
  • build.gradle的sourceSets.main 设置布局路径

res.srcDirs "../res", 'res', "${RES_PATH}/proj/res","../../../../../Android/TradPlusSDK/res"

5、隐藏和再次展示

  • 广告展示后,隐藏
TradPlusNative.hideNative("在TP平台创建的广告位ID");
  • 广告隐藏后,再展示
TradPlusNative.displayNative("在TP平台创建的广告位ID");

6、监听回调

var listener:TPNativeListener = {
onNativeLoaded(adUnitId, adInfo) {
// 请求一次广告,有广告加载成功,一轮请求只会返回一次
},
onNativeLoadFailed(adUnitId, error) {
// 请求一次广告,所有广告加载失败,一轮请求只会返回一次
},
onNativeImpression(adUnitId, adInfo) {
// 展示成功
},
onNativeShowFailed(adUnitId, adInfo, error) {
// 展示失败
},
onNativeClosed(adUnitId, adInfo) {
// 广告关闭
},
onNativeClicked(adUnitId, adInfo) {
// 广告点击
},
onNativeStartLoad(adUnitId, adInfo) {
// 广告开始加载
},
onNativeBiddingStart(adUnitId, adInfo) {
// Bidding开始
},
onNativeBiddingEnd(adUnitId, adInfo, error) {
// Bidding结束,有error表示Bidding失败
},
onNativeIsLoading(adUnitId) {
// 一轮请求还没有结束,又发起了一轮请求
},
onNativeOneLayerStartLoad(adUnitId, adInfo, error) {
// 每层广告开始加载
},
onNativeOneLayerLoaded(adUnitId, adInfo) {
// 单层广告加载成功
},
onNativeOneLayerLoadFailed(adUnitId, adInfo) {
// 单层广告加载加载失败
},
onNativeAllLoaded(adUnitId, isSuccess) {
// 请求一次广告,一轮结束会收到一次回调,success true表示有广告加载成功,false表示所有广告加载失败
},
};
TradPlusNative.setNativeListener(listener);

“再看一次”监听回调 快手、穿山甲支持(可选)

...
onPlayAgainImpression(adUnitId, adInfo) {
// “再看一次”展示
},
onPlayAgainShowFailed(adUnitId, adInfo, error) {
// “再看一次”展示失败
},
onPlayAgainClicked(adUnitId, adInfo) {
// “再看一次”点击
},
onPlayAgainRewarded(adUnitId, adInfo) {
// “再看一次”奖励
},
onPlayAgainPlayStart(adUnitId, adInfo) {
// “再看一次”视频播放开始
},
onPlayAgainPlayEnd(adUnitId, adInfo) {
// “再看一次”视频播放结束
},
onDownloadStart(adUnitId, adInfo, totalBytes, currBytes, fileName, appName) {
// 开始下载回调
// totalBytes:文件总大小(单位:字节)
// currBytes:当前已下载的大小(单位:字节)
// fileName:文件名称
// appName:文件对应的应用名称

},
onDownloadUpdate(adUnitId, adInfo, totalBytes, currBytes, fileName, appName, progres) {
// 下载进度更新回调
// progress:下载进度
},
onDownloadPause(adUnitId, adInfo, totalBytes, currBytes, fileName, appName) {
// 暂停下载回调
},
onDownloadFinish(adUnitId, adInfo, totalBytes, currBytes, fileName, appName) {
// 下载完成回调
},
onDownloadFailed(adUnitId, adInfo, totalBytes, currBytes, fileName, appName) {
// 下载失败回调
},
onInstalled(adUnitId, adInfo, totalBytes, currBytes, fileName, appName) {
// 下载失败回调
},
...