1. 全自动加载激励视频广告介绍
全自动加载模式,是Taku推出的一站式请求维护方案,能够根据用户的使用状态和广告消耗进度,多节点智能判断下一条广告的预加载和缓存时机。在满足开发者运营策略的基础上,规避广告数据实时加载的失败风险和展示机会被浪费,减轻用户因为广告未加载或加载不流畅造成的负面情绪。通过全自动加载方案,开发者可以避免反复冗杂的人工干预请求方案,效率提升立竿见影。SDK开始支持全自动加载模式。
1.1 集成建议
(1) 初始化:在主Activity onCreate()
里调用ATRewardVideoAutoAd.init(mainActivity,placementIds,listener)
并传入主Activity进行初始化,后续如需添加全自动加载广告位请调用addPlacementId(placementId)
添加
(2) 建议进入可展示广告场景后调用entryAdScenario(placementId,scenarioId)
统计当前广告位的缓存状态,具体的统计说明可查看广告场景区分不同业务场景的数据
(3) 展示广告:展示前判断isAdReady(placementId)
是否准备好,准备好后再调用 show(activity,placement,listener)
进行广告展示
(4) 服务器回调:如需支持服务器回调(S2S)传入userId,extraData请在以下时机进行设置:
注意:
① 全自动激励视频内部实现自动加载逻辑,所以请避免在onRewardVideoAutoLoaded
回调中直接执行广告展示
② 广告位如果设置为全自动加载则不要调用ATRewardVideoAd
(普通激励视频).load()
进行广告加载
1.2 注意事项:
(1) 激励视频的激励下发时会回调onReward()
,开发者可以在onReward
回调中下发激励给用户
(2) 全自动加载激励视频支持服务器回调(S2S)的激励下发机制,同时也支持各广告平台的服务器回调功能,请参考 激励视频服务器激励(S2S)说明
2. API说明
2.1 广告初始化
ATRewardVideoAutoAd: 全自动加载激励视频广告的管理类
方法 | 说明 |
---|---|
void init(Context context, String[] placementIds, ATRewardVideoAutoLoadListener loadListener) | ATRewardVideoAutoAd广告的初始化方法,初始化后即自动对指定广告位发起广告加载 context:如果有集成以下平台:Ironsource、Kidoz、Maio、Tapjoy,context必须是Activity placementIds:开启全自动加载的广告位Id(可传null) loadListener:广告填充回调 |
void setLocalExtra(String placementId, Map | 对指定广告位设置本地参数 placementId:广告位Id localExtra:本地参数,key通过ATAdConst.KEY进行获取 |
初始化:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//建议在主Activity onCreate时传入Activity进行初始化
ATRewardVideoAutoAd.init(MainActivity.this, new String[]{"your rv placementID1", "your rv placementID2"},autoLoadListener);
}
}
2.2 本地参数
ATAdConst.KEY:LocalExtra本地参数预定义Key取值
方法 | 说明 |
---|---|
USER_ID | (可选)用于服务器激励,用户唯一ID |
USER_CUSTOM_DATA | (可选)用于服务器激励,用户自定义数据 |
服务器回调:
//设置服务器回调localExtra信息
private static void setPlacementIdLocalExtra(String placementId) {
String userid = "test_userid_001";
String userdata = "test_userdata_001_" + placementId + "_" + System.currentTimeMillis();
Map localMap = new HashMap<>();
localMap.put(ATAdConst.KEY.USER_ID, userid);
localMap.put(ATAdConst.KEY.USER_CUSTOM_DATA, userdata);
//从下一次的广告加载开始生效
ATRewardVideoAutoAd.setLocalExtra(placementId, localMap);
}
//设置时机1:初始化前或添加广告位前
setPlacementIdLocalExtra("your rv placementID1");//初始化前,对指定广告位设置localExtra
ATRewardVideoAutoAd.init(this, new String[]{"your rv placementID1", "your rv placementID2"}, autoLoadListener);
//ATRewardVideoAutoAd.addPlacementId("placementId1");
//设置时机2:广告填充后
private static ATRewardVideoAutoLoadListener autoLoadListener = new ATRewardVideoAutoLoadListener() {
@Override
public void onRewardVideoAutoLoaded(String placementId) {
//如需更新localExtra则在此处设置localExtra,从下次加载生效
setPlacementIdLocalExtra(placementId);
}
@Override
public void onRewardVideoAutoLoadFail(String placementId, AdError adError) {
}
};
2.3 广告展示
ATRewardVideoAutoAd:
方法 | 说明 |
---|---|
boolean isAdReady(String placementId)
|
判断该广告位是否存在可展示的广告 placementId:需查询的广告位Id |
void show(Activity activity, String placementId, ATRewardVideoAutoEventListener eventListener) | 展示该广告位激励视频广告 activity:展示广告的Activity placementId:需展示的广告位Id eventListener:激励视频广告展示及激励回调,ATRewardVideoAutoEventListener说明见下方 |
void show(Activity activity, String placementId, ATShowConfig showConfig, ATRewardVideoAutoEventListener eventListener) | (v6.3.10新增)展示该广告位激励视频广告 activity:参数意义同上 placementId:参数意义同上 showConfig:可传入展示时的额外参数,如下1.ATShowConfig#showCustomExt(String showCustomExt):可传入展示时自定义参数,传入的该参数将通过ATAdInfo#getShowCustomExt()返回 2.ATShowConfig#scenarioId(String scenarioId):可传入广告场景,同show(Activity activity, String placementId, String scenario, ATRewardVideoAutoEventListener eventListener) eventListener:参数意义同上 |
void entryAdScenario(String placementId, String scenarioId) | 对应广告位进入业务场景缓存状态统计 placementId:广告位Id scenario:广告展示场景,可从后台创建场景参数和使用请参考 业务场景缓存状态统计 |
广告展示:
/*
为了统计场景到达率,相关信息可查阅 "https://help.takuad.com/docs/1RWLAv"
在满足广告触发条件时调用“进入广告场景”方法,比如:
** 广告场景是在清理结束后弹出广告,则在清理结束时调用;
* 1、先调用 "entryAdScenario"
* 2、在调用 "isAdReady" 是否可展示
* 3、最后调用 "show" 展示
* 4、scenario 传入场景id后台场景管理才会有数据显示
*/
ATRewardVideoAd.entryAdScenario("your rv placementID", "your scenarioID");
//需判断广告位是否准备好
if(ATRewardVideoAutoAd.isAdReady("your rv placementID")){
ATRewardVideoAutoAd.show(activity, "your rv placementID", "your scenarioID",autoEventListener);
}
2.4 广告对象
ATRewardVideoAutoAd:
方法 | 说明 |
---|---|
checkAdStatus(String placementId) | 获取该广告位的状态对象 ATAdStatusInfo,ATAdStatusInfo对象的API说明见下方 placementId:需查询的广告位Id |
checkValidAdCaches(String placementId) | 查询该广告位的所有缓存信息的ATAdInfo对象 placementId:需查询的广告位Id |
void addPlacementId(String... placementIds) | 添加需全自动加载广告位 placementIds:需全自动加载广告位Id |
void removePlacementId(String... placementIds) | 移除无需全自动加载广告位 placementIds:无需全自动加载广告位Id |
ATAdStatusInfo:广告位的状态对象
方法 | 说明 |
---|---|
boolean isLoading() | 判断当前广告位是否正在加载广告 |
boolean isReady() | 判断当前广告位是否存在可展示的广告,与ATRewardVideoAd.isAdReady()方法作用相同 |
getATTopAdInfo | 获取当前广告位优先级最高的广告缓存信息 ATAdInfo对象 ATAdInfo:广告的信息对象,可区分广告平台,主要包含第三方聚合平台的id信息 见ATAdInfo信息说明 |
2.5 广告监听
ATRewardVideoAutoLoadListener:ATRewardVideoAutoAd广告的加载事件回调监听:
方法 | 说明 |
---|---|
void onRewardVideoAutoLoaded(String placementId) | 对应广告位广告加载成功回调 placementId:对应广告位Id |
void onRewardVideoAutoLoadFail(String placementId, AdError adError) | 对应广告位广告加载失败回调 placementId:广告位Id adError:广告加载失败信息,可通过AdError.getFullErrorInfo()获取全部错误信息,请参考 AdError |
监听示例:
private static ATRewardVideoAutoLoadListener autoLoadListener = new ATRewardVideoAutoLoadListener() {
@Override
public void onRewardVideoAutoLoaded(String placementId) {
}
@Override
public void onRewardVideoAutoLoadFail(String placementId, AdError adError) {
}
};
ATRewardVideoAutoEventListener:ATRewardVideoAutoAd广告的事件回调监听:
方法 | 说明 |
---|---|
void onRewardedVideoAdPlayStart(ATAdInfo atAdInfo) | 广告开始播放回调(即激励视频展示回调) ATAdInfo:广告的信息对象,可区分广告平台,主要包含第三方聚合平台的id信息 见ATAdInfo信息说明 |
void onRewardedVideoAdPlayEnd(ATAdInfo atAdInfo) | 广告播放结束回调 参数意义同上 |
void onRewardedVideoAdPlayFailed(AdError errorCode, ATAdInfo atAdInfo) | 广告播放失败回调 atAdInfo:参数意义同上 errorCode:广告展示失败信息,可通过AdError.getFullErrorInfo()获取全部错误信息,请参考 AdError |
void onReward(ATAdInfo atAdInfo) | 下发激励的时候会触发此回调,建议开发者在此回调中下发奖励,一般在onRewardedVideoAdClosed之前回调 参数意义同上 |
void onRewardedVideoAdClosed(ATAdInfo atAdInfo) | 广告关闭回调 参数意义同上 |
void onRewardedVideoAdPlayClicked(ATAdInfo atAdInfo) | 广告点击 参数意义同上 |
void onDeeplinkCallback(ATAdInfo atAdInfo, boolean isSuccess) | deeplink回调,针对Adx、OnlineApi广告 isSuccess:是否成功 |
void onDownloadConfirm(Context context, ATAdInfo atAdInfo, View clickView, ATNetworkConfirmInfo networkConfirmInfo) | 应用类广告点击下载时回调方法。 atAdInfo:参数意义同上 networkConfirmInfo:第三方广告平台提供的回调信息(目前仅有优量汇的GDTDownloadFirmInfo) |
void onRewardedVideoAdAgainPlayStart(ATAdInfo atAdInfo) | 穿山甲再看一个广告的开始播放回调 参数意义参考onRewardedVideoAdPlayStart |
void onRewardedVideoAdAgainPlayEnd(ATAdInfo atAdInfo) | 穿山甲再看一个广告的播放结束回调 参数意义参考onRewardedVideoAdPlayEnd |
void onRewardedVideoAdAgainPlayFailed(AdError errorCode, ATAdInfo atAdInfo) | 穿山甲再看一个广告的播放失败回调 参数意义参考onRewardedVideoAdPlayFailed |
void onRewardedVideoAdAgainPlayClicked(ATAdInfo atAdInfo) | 穿山甲再看一个广告的点击回调 参数意义参考onRewardedVideoAdPlayClicked |
void onAgainReward(ATAdInfo atAdInfo) | 穿山甲再看一个广告的下发激励回调 参数意义参考onReward |
3. 示例代码
//设置服务器回调localExtra信息
private static void setPlacementIdLocalExtra(String placementId) {
String userid = "test_userid_001";
String userdata = "test_userdata_001_" + placementId + "_" + System.currentTimeMillis();
Map localMap = new HashMap<>();
localMap.put(ATAdConst.KEY.USER_ID, userid);
localMap.put(ATAdConst.KEY.USER_CUSTOM_DATA, userdata);
//从下一次的广告加载开始生效
ATRewardVideoAutoAd.setLocalExtra(placementId, localMap);
}
//设置时机1:初始化前或添加广告位前
setPlacementIdLocalExtra("your rv placementID1");//初始化前,对指定广告位设置localExtra
ATRewardVideoAutoAd.init(this, new String[]{"your rv placementID1", "your rv placementID2"}, autoLoadListener);
//ATRewardVideoAutoAd.addPlacementId("placementId1");
//设置时机2:广告填充后
private static ATRewardVideoAutoLoadListener autoLoadListener = new ATRewardVideoAutoLoadListener() {
@Override
public void onRewardVideoAutoLoaded(String placementId) {
//如需更新localExtra则在此处设置localExtra,从下次加载生效
setPlacementIdLocalExtra(placementId);
}
@Override
public void onRewardVideoAutoLoadFail(String placementId, AdError adError) {
}
};
/*
为了统计场景到达率,相关信息可查阅 "https://docs.takuad.com/#/zh-cn/android/NetworkAccess/scenario/scenario"
在满足广告触发条件时调用“进入广告场景”方法,比如:
** 广告场景是在清理结束后弹出广告,则在清理结束时调用;
* 1、先调用 "entryAdScenario"
* 2、在调用 "isAdReady" 是否可展示
* 3、最后调用 "show" 展示
* 4、scenario 传入场景id后台场景管理才会有数据显示
*/
ATRewardVideoAd.entryAdScenario("your rv placementID1", "your scenarioID");
//需判断广告位是否准备好
if(ATRewardVideoAutoAd.isAdReady("your rv placementID1")){
ATRewardVideoAutoAd.show(activity, "your rv placementID1", "your scenarioID",autoEventListener);
}
详细激励视频广告示例代码请参考:Demo的RewardVideoAdActivity类