激励视频广告是聚合了其他第三方广告平台的激励视频广告,可以使用ATRewardedVideo的API来实现广告的加载和播放。目前支持两种集成方式,具体说明如下:
模式(二选一) | 说明 |
---|---|
手动请求模式 | 由自行通过API选择合适的时机调用广告加载,具体参照文档下方集成建议 |
全自动加载模式 | Taku推出的一站式请求维护方案,能够根据用户的使用状态和广告消耗进度,自动判断下一条广告的预加载和缓存时机,以达到更优的加载效果,具体见:激励视频广告全自动加载模式 |
ATRewardedVideo:
API | 参数 | 说明 |
---|---|---|
loadVideoAd | string placementid,Dictionary | 加载广告 |
setListener | ATRewardedVideoListener listener | 设置监听回调接口 (5.9.51版本之后废弃)设置监听器的方式具体参考: 激励视频广告事件设置说明 |
hasAdReady | string placementid | 判断是否有广告缓存 |
checkAdStatus | string placementid | (v5.7.03新增)获取当前广告位的状态(Json字符串): 1、isLoading:是否正在加载 2、isReady:是否有广告缓存(与hasAdReady作用相同) 3、AdInfo:当前优先级最高的广告缓存信息(参考ATCallbackInfo说明) |
getValidAdCaches | string placementid | (v5.7.54新增)获取加载成功的全部广告缓存信息(JSON字符串) (参考ATCallbackInfo说明) |
showAd | string placementid | 显示广告 |
showAd | string placementid,Dictionary | 使用场景功能更显示广告 |
entryScenarioWithPlacementID | string placementid,string scenarioID | 设置进入可展示广告场景 |
使用以下代码加载激励视频广告:
public void loadVideo()
{
ATRewardedVideo.Instance.client.onAdLoadEvent += onAdLoad;
ATRewardedVideo.Instance.client.onAdLoadFailureEvent += onAdLoadFail;
ATRewardedVideo.Instance.client.onAdVideoStartEvent += onAdVideoStartEvent;
ATRewardedVideo.Instance.client.onAdVideoEndEvent += onAdVideoEndEvent;
ATRewardedVideo.Instance.client.onAdVideoFailureEvent += onAdVideoPlayFail;
ATRewardedVideo.Instance.client.onAdClickEvent += onAdClick;
ATRewardedVideo.Instance.client.onRewardEvent += onReward;
ATRewardedVideo.Instance.client.onAdVideoCloseEvent += onAdVideoClosedEvent;
Dictionary jsonmap = new Dictionary();
//如果需要通过开发者的服务器进行奖励的下发(部分广告平台支持此服务器激励),则需要传递下面两个key
//ATConst.USERID_KEY必传,用于标识每个用户;ATConst.USER_EXTRA_DATA为可选参数,传入后将透传到开发者的服务器
jsonmap.Add(ATConst.USERID_KEY, "test_user_id");
jsonmap.Add(ATConst.USER_EXTRA_DATA, "test_user_extra_data");
ATRewardedVideo.Instance.loadVideoAd(mPlacementId_rewardvideo_all,jsonmap);
}
注: 请参阅下文,了解如何获得有关激励视频广告事件的通知(加载成功/失败,展示,点击,视频开始/结束和激励)。
ATRewardedVideo.Instance.hasAdReady(mPlacementId_rewardvideo_all);
与展示原生广告相比,展示激励视频要简单得多,只要调用展示api并传递展示广告位ID作为参数:
public void showVideo()
{
Debug.Log ("Developer show video....");
ATRewardedVideo.Instance.showAd(mPlacementId_rewardvideo_all);
}
当用到 场景 功能时:
public void showVideo()
{
Debug.Log ("Developer show video....");
Dictionary jsonmap = new Dictionary();
jsonmap.Add(AnyThinkAds.Api.ATConst.SCENARIO, showingScenarioID);
ATRewardedVideo.Instance.showAd(mPlacementId_rewardvideo_all, jsonmap);
}
回调信息详情请查看:回调信息说明
使用以下代码实现多个监听器
/广告加载成功
ATRewardedVideo.Instance.client.onAdLoadEvent += onAdLoad;
//广告加载失败
ATRewardedVideo.Instance.client.onAdLoadFailureEvent += onAdLoadFail;
//广告展示的回调(可依赖这个回调统计展示数据)
ATRewardedVideo.Instance.client.onAdVideoStartEvent += onAdVideoStartEvent;
//广告播放结束
ATRewardedVideo.Instance.client.onAdVideoEndEvent += onAdVideoEndEvent;
//广告视频播放失败
ATRewardedVideo.Instance.client.onAdVideoFailureEvent += onAdVideoPlayFail;
//广告点击
ATRewardedVideo.Instance.client.onAdClickEvent += onAdClick;
//广告激励回调(可依赖该监听下发游戏激励)
ATRewardedVideo.Instance.client.onRewardEvent += onReward;
//广告被关闭
ATRewardedVideo.Instance.client.onAdVideoCloseEvent += onAdVideoClosedEvent;
进阶监听设置:
//广告源启动请求
ATRewardedVideo.Instance.client.onAdSourceAttemptEvent += startLoadingADSource;
//广告源加载成功
ATRewardedVideo.Instance.client.onAdSourceFilledEvent += finishLoadingADSource;
//广告源加载失败
ATRewardedVideo.Instance.client.onAdSourceLoadFailureEvent += failToLoadADSource;
//广告源Bidding启动
ATRewardedVideo.Instance.client.onAdSourceBiddingAttemptEvent += startBiddingADSource;
//广告源Bidding成功
ATRewardedVideo.Instance.client.onAdSourceBiddingFilledEvent += finishBiddingADSource;
//广告源Bidding失败
ATRewardedVideo.Instance.client.onAdSourceBiddingFailureEvent += failBiddingADSource;
方法定义参数如下代码(注意 : 方法名可参考以下代码或者自定义方法名,但参数必须一致)
//广告加载成功
public void onAdLoad(object sender,ATAdEventArgs erg)
{
Debug.Log("Developer callback onAdLoad :" + erg.placementId);
}
//广告加载失败
public void onAdLoadFail(object sender,ATAdErrorEventArgs erg )
{
Debug.Log("Developer callback onAdLoadFail :" + erg.placementId + "--erg.code:" + code + "--msg:" + erg.message);
}
public void onAdVideoStartEvent(object sender, ATAdEventArgs erg) {
Debug.Log("Developer onAdVideoStartEvent------" + "->" + JsonMapper.ToJson(erg.callbackInfo.toDictionary()));
}
public void onAdVideoEndEvent(object sender, ATAdEventArgs erg)
{
Debug.Log("Developer onAdVideoEndEvent------" + "->" + JsonMapper.ToJson(erg.callbackInfo.toDictionary()));
}
public void onAdVideoPlayFail(object sender, ATAdErrorEventArgs erg)
{
Debug.Log("Developer onAdVideoClosedEvent------" + "->" + JsonMapper.ToJson(erg.errorMessage));
}
//sender 为广告类型对象,erg为返回信息
//广告被点击
public void onAdClick(object sender,ATAdEventArgs erg)
{
Debug.Log("Developer callback onAdClick :" + erg.placementId);
}
public void onReward(object sender, ATAdEventArgs erg)
{
Debug.Log("Developer onReward------" + "->" + JsonMapper.ToJson(erg.callbackInfo.toDictionary()));
}
public void onAdVideoClosedEvent(object sender, ATAdEventArgs erg)
{
Debug.Log("Developer onAdVideoClosedEvent------" + "->" + JsonMapper.ToJson(erg.callbackInfo.toDictionary()));
}
public void startLoadingADSource(object sender,ATAdEventArgs erg){
Debug.Log("Developer startLoadingADSource------" + "->" + JsonMapper.ToJson(erg.callbackInfo.toAdsourceDictionary()));
}
public void finishLoadingADSource(object sender,ATAdEventArgs erg){
Debug.Log("Developer finishLoadingADSource------" + "->" + JsonMapper.ToJson(erg.callbackInfo.toAdsourceDictionary()));
}
public void failToLoadADSource(object sender,ATAdErrorEventArgs erg ){
Debug.Log("Developer failToLoadADSource------erg.errorCode:" + erg.errorCode + "---erg.errorMessage:" + erg.errorMessage+ "->" + JsonMapper.ToJson(erg.callbackInfo.toAdsourceDictionary()));
}
public void startBiddingADSource(object sender,ATAdEventArgs erg){
Debug.Log("Developer startBiddingADSource------" + "->" + JsonMapper.ToJson(erg.callbackInfo.toAdsourceDictionary()));
}
public void finishBiddingADSource(object sender,ATAdEventArgs erg){
Debug.Log("Developer finishBiddingADSource------" + "->" + JsonMapper.ToJson(erg.callbackInfo.toAdsourceDictionary()));
}
public void failBiddingADSource(object sender,ATAdErrorEventArgs erg ){
Debug.Log("Developer failBiddingADSource------erg.errorCode:" + erg.errorCode + "---erg.errorMessage:" + erg.errorMessage+ "->" + JsonMapper.ToJson(erg.callbackInfo.toAdsourceDictionary()));
}
再看一个回调:仅穿山甲支持再看一个回调
// 激励视频再看一次视频开始播放
ATRewardedVideo.Instance.client.onPlayAgainStart += onRewardedVideoAdAgainPlayStart;
// 激励视频再看一次视频播放失败
ATRewardedVideo.Instance.client.onPlayAgainFailure += onRewardedVideoAdAgainPlayFail;
// 激励视频再看一次视频播放结束
ATRewardedVideo.Instance.client.onPlayAgainEnd += onRewardedVideoAdAgainPlayEnd;
// 激励视频再看一次视频点击
ATRewardedVideo.Instance.client.onPlayAgainClick += onRewardedVideoAdAgainPlayClicked;
// 激励视频再看一次视频激励下发
ATRewardedVideo.Instance.client.onPlayAgainReward += onAgainReward;
public void onRewardedVideoAdAgainPlayStart(object sender,ATAdEventArgs erg){
Debug.Log("Developer onRewardedVideoAdAgainPlayStart------" + "->" + JsonMapper.ToJson(erg.callbackInfo.toDictionary()));
}
public void onRewardedVideoAdAgainPlayEnd(object sender,ATAdEventArgs erg){
Debug.Log("Developer onRewardedVideoAdAgainPlayEnd------" + "->" + JsonMapper.ToJson(erg.callbackInfo.toDictionary()));
}
public void onRewardedVideoAdAgainPlayFail(object sender,ATAdErrorEventArgs erg){
Debug.Log("Developer onRewardedVideoAdAgainPlayFail------code:" + erg.errorCode + "---message:" + erg.errorMessage);
}
public void onRewardedVideoAdAgainPlayClicked(object sender,ATAdEventArgs erg){
Debug.Log("Developer onRewardedVideoAdAgainPlayClicked------" + "->" + JsonMapper.ToJson(erg.callbackInfo.toDictionary()));
}
public void onAgainReward(object sender, ATAdEventArgs erg){
Debug.Log("Developer onAgainReward------" + "->" + JsonMapper.ToJson(erg.callbackInfo.toDictionary()));
}
您可以实现ATRewardedVideo Listener接口的类,来获得有关激励视频广告事件,xxxxx的通知:(注意:对于Android来说,所有回调方法均不在Unity的主线程)
class ATCallbackListener : ATRewardedVideoListener {
//广告加载成功
public void onRewardedVideoAdLoaded(string placementId){
Debug.Log("Developer onRewardedVideoAdLoaded------");
}
//广告加载失败
public void onRewardedVideoAdLoadFail(string placementId, string code, string message){
Debug.Log("Developer onRewardedVideoAdLoadFail------:code" + code + "--message:" + message);
}
//广告开始播放
public void onRewardedVideoAdPlayStart(string placementId, ATCallbackInfo callbackInfo){
Debug.Log("Developer onRewardedVideoAdPlayStart------");
}
//广告播放结束
public void onRewardedVideoAdPlayEnd(string placementId, ATCallbackInfo callbackInfo){
Debug.Log("Developer onRewardedVideoAdPlayEnd------");
}
//广告播放失败
public void onRewardedVideoAdPlayFail(string placementId, string code, string message){
Debug.Log("Developer onRewardedVideoAdPlayFail------code:" + code + "---message:" + message);
}
//广告被关闭,其中isReward仅表示onRewardedVideoAdPlayClosed被回调时onReward()方法被回调了没有
public void onRewardedVideoAdPlayClosed(string placementId, bool isReward, ATCallbackInfo callbackInfo){
Debug.Log("Developer onRewardedVideoAdPlayClosed------isReward:" + isReward);
}
//广告被点击
public void onRewardedVideoAdPlayClicked(string placementId, ATCallbackInfo callbackInfo){
Debug.Log("Developer onRewardVideoAdPlayClicked------");
}
//激励成功,开发者可在此回调中下发奖励,一般先于onRewardedVideoAdPlayClosed回调,服务器激励则不一定
public void onReward(string placementId, ATCallbackInfo callbackInfo){
Debug.Log("Developer onReward------");
}
// v5.8.10 新增广告源层级回调
// 广告源开始加载
public void startLoadingADSource(string placementId, ATCallbackInfo callbackInfo){
Debug.Log("Developer startLoadingADSource------");
}
// 广告源加载完成
public void finishLoadingADSource(string placementId, ATCallbackInfo callbackInfo){
Debug.Log("Developer finishLoadingADSource------");
}
// 广告源失败
public void failToLoadADSource(string placementId,ATCallbackInfo callbackInfo,string code, string message){
Debug.Log("Developer failToLoadADSource------");
}
// 广告源开始bidding
public void startBiddingADSource(string placementId, ATCallbackInfo callbackInfo){
Debug.Log("Developer startBiddingADSource------");
}
// 广告源bidding成功
public void finishBiddingADSource(string placementId, ATCallbackInfo callbackInfo){
Debug.Log("Developer finishBiddingADSource------");
}
// 广告源bidding失败
public void failBiddingADSource(string placementId,ATCallbackInfo callbackInfo,string code, string message){
Debug.Log("Developer failBiddingADSource------");
}
}
创建此类的一个实例,并将其传递给加载api中的listener参数,参考这里
注:V5.7.82及以上版本仅穿山甲支持再看一个回调
class ATCallbackListener : ATRewardedVideoExListener {
// 激励视频再看一次视频开始播放
public void onRewardedVideoAdAgainPlayStart(string placementId, ATCallbackInfo callbackInfo) {
Debug.Log("Developer onRewardedVideoAdAgainPlayStart------");
}
// 激励视频再看一次视频播放结束
public void onRewardedVideoAdAgainPlayEnd(string placementId, ATCallbackInfo callbackInfo) {
Debug.Log("Developer onRewardedVideoAdAgainPlayEnd------");
}
// 激励视频再看一次视频播放失败
public void onRewardedVideoAdAgainPlayFail(string placementId, string code, string message) {
Debug.Log("Developer onRewardedVideoAdAgainPlayFail------");
}
// 激励视频再看一次视频点击
public void onRewardedVideoAdAgainPlayClicked(string placementId, ATCallbackInfo callbackInfo) {
Debug.Log("Developer onRewardedVideoAdAgainPlayClicked------");
}
// 激励视频再看一次视频激励下发
public void onAgainReward(string placementId, ATCallbackInfo callbackInfo) {
Debug.Log("Developer onAgainReward------");
}
}
注意: 本节中的代码段摘自我们Demo的videoScenes.cs demo project.