大家可以先参考我的上一篇博客 Banner广告 传送门

首先创建一个脚本具体内容如下

package com.unity3d.player.chuanshanjia;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;import androidx.annotation.Nullable;import com.bytedance.sdk.openadsdk.AdSlot;
import com.bytedance.sdk.openadsdk.TTAdConstant;
import com.bytedance.sdk.openadsdk.TTAdLoadType;
import com.bytedance.sdk.openadsdk.TTAdManager;
import com.bytedance.sdk.openadsdk.TTAdNative;
import com.bytedance.sdk.openadsdk.TTAppDownloadListener;
import com.bytedance.sdk.openadsdk.TTRewardVideoAd;
import com.unity3d.player.R;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
import com.unity3d.player.tools.TToast;public class RewardVideoActivity extends Activity{private static RewardVideoActivity _Instance;public  static RewardVideoActivity Inst(){return _Instance;}private TTAdNative mTTAdNative;private boolean isExpress = false;private String TAG = "RewardVideoActivity";private boolean mIsLoaded = false; //视频是否加载完成private TTRewardVideoAd mttRewardVideoAd;// 是否开放进阶奖励功能private boolean isEnableAdvancedReward = false;private boolean mHasShowDownloadActive = false;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);_Instance = this;//step1:初始化sdkTTAdManager ttAdManager = TTAdManagerHolder.get();//step2:(可选,强烈建议在合适的时机调用):申请部分权限,如read_phone_state,防止获取不了imei时候,下载类广告没有填充的问题。TTAdManagerHolder.get().requestPermissionIfNecessary(this);//step3:创建TTAdNative对象,用于调用广告请求接口mTTAdNative = ttAdManager.createAdNative(getApplicationContext());Intent it = getIntent();String codeId = it.getStringExtra("codeId");int orientation = it.getIntExtra("orientation",2);String userId = it.getStringExtra("userId");AddLoad(codeId,orientation,userId);}//codeId 平台创建的代码位ID 以9开头9位数字 orientation 期望视频的播放方向 1竖屏 2横屏public void AddLoad(final String codeId, int orientation,String userId){AdSlot adSlot;adSlot = new AdSlot.Builder().setCodeId(codeId)//模板广告需要设置期望个性化模板广告的大小,单位dp,激励视频场景,只要设置的值大于0即可//且仅是模板渲染的代码位ID使用,非模板渲染代码位切勿使用.setExpressViewAcceptedSize(1080,1920).setUserID(userId)//tag_id.setMediaExtra("media_extra") //附加参数.setOrientation(orientation) //必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL.setAdLoadType(TTAdLoadType.LOAD)//推荐使用,用于标注此次的广告请求用途为预加载(当做缓存)还是实时加载,方便后续为开发者优化相关策略.build();mTTAdNative.loadRewardVideoAd(adSlot, new TTAdNative.RewardVideoAdListener() {@Overridepublic void onError(int code, String message) {Log.e(TAG, "Callback --> onError: " + code + ", " + String.valueOf(message));goToMainActivity();TToast.show(RewardVideoActivity.this, message);UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsLoadFailed);}//视频广告加载后,视频资源缓存到本地的回调,在此回调后,播放本地视频,流畅不阻塞。@Overridepublic void onRewardVideoCached() {Log.e(TAG, "Callback --> onRewardVideoCached");mIsLoaded = true;TToast.show(RewardVideoActivity.this, "Callback --> rewardVideoAd video cached");UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsCached);}@Overridepublic void onRewardVideoCached(TTRewardVideoAd ad) {Log.e(TAG, "Callback --> onRewardVideoCached");mIsLoaded = true;TToast.show(RewardVideoActivity.this, "Callback --> rewardVideoAd video cached");ad.showRewardVideoAd(RewardVideoActivity.this, TTAdConstant.RitScenes.CUSTOMIZE_SCENES, "scenes_test");}//视频广告的素材加载完毕,比如视频url等,在此回调后,可以播放在线视频,网络不好可能出现加载缓冲,影响体验。@Overridepublic void onRewardVideoAdLoad(TTRewardVideoAd ad) {Log.e(TAG, "Callback --> onRewardVideoAdLoad");TToast.show(RewardVideoActivity.this, "rewardVideoAd loaded 广告类型:" + getAdType(ad.getRewardVideoAdType()));mIsLoaded = false;mttRewardVideoAd = ad;mttRewardVideoAd.setRewardAdInteractionListener(new TTRewardVideoAd.RewardAdInteractionListener() {@Override//广告的展示回调public void onAdShow() {Log.d(TAG, "Callback --> rewardVideoAd show");TToast.show(RewardVideoActivity.this, "Callback --> rewardVideoAd show");UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsShowSucceed);}@Override//广告下载bar点击回调public void onAdVideoBarClick() {Log.d(TAG, "Callback --> rewardVideoAd bar click");TToast.show(RewardVideoActivity.this, "Callback --> onAdVideoBarClick");UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsClick);}@Override//广告关闭回调public void onAdClose() {Log.d(TAG, "Callback --> rewardVideoAd close");if (isEnableAdvancedReward) {Log.d(TAG, "本次奖励共发放:");}TToast.show(RewardVideoActivity.this, "Callback --> rewardVideoAd close");goToMainActivity();UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsClosed);}//视频播放完成回调@Overridepublic void onVideoComplete() {Log.d(TAG, "Callback --> rewardVideoAd complete");TToast.show(RewardVideoActivity.this, "Callback --> rewardVideoAd complete");UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsPlayedFinished);}@Overridepublic void onVideoError() {Log.e(TAG, "Callback --> rewardVideoAd error");TToast.show(RewardVideoActivity.this, "Callback --> rewardVideoAd error");goToMainActivity();UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsPlayeFailed);}//视频播放完成后,奖励验证回调,rewardVerify:是否有效,rewardAmount:奖励梳理,rewardName:奖励名称@Overridepublic void onRewardVerify(boolean rewardVerify, int rewardAmount, String rewardName, int errorCode, String errorMsg) {String logString = "verify:" + rewardVerify + " amount:" + rewardAmount +" name:" + rewardName + " errorCode:" + errorCode + " errorMsg:" + errorMsg;Log.e(TAG, "onRewardVerify Callback --> " + logString);
//                        goToMainActivity("");TToast.show(RewardVideoActivity.this, "Callback --> onRewardVerify");UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsRewardVerify);}/*** 激励视频播放完毕,验证是否有效发放奖励的回调 4400版本新增** @param isRewardValid 奖励有效* @param rewardType 奖励类型,0:基础奖励 >0:进阶奖励* @param extraInfo 奖励的额外参数*/@Overridepublic void onRewardArrived(boolean isRewardValid, int rewardType, Bundle extraInfo) {Log.e(TAG, "Callback --> rewardVideoAd has onRewardArrived ");TToast.show(RewardVideoActivity.this, "Callback --> onRewardArrived");UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsRewardArrived);}//跳过视频播放回调@Overridepublic void onSkippedVideo() {Log.e(TAG, "Callback --> rewardVideoAd has onSkippedVideo");UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsSkip);}});mttRewardVideoAd.setRewardPlayAgainInteractionListener(new TTRewardVideoAd.RewardAdInteractionListener() {@Overridepublic void onAdShow() {Log.d(TAG, "Callback --> rewardPlayAgain show");UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsShowSucceed);}@Overridepublic void onAdVideoBarClick() {Log.d(TAG, "Callback --> rewardPlayAgain bar click");TToast.show(RewardVideoActivity.this, "Callback --> rewardPlayAgain bar click");}@Overridepublic void onAdClose() {Log.d(TAG, "Callback --> rewardPlayAgain close");TToast.show(RewardVideoActivity.this, "Callback --> rewardPlayAgain bar click");UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsClosed);}//视频播放完成回调@Overridepublic void onVideoComplete() {Log.d(TAG, "Callback --> rewardPlayAgain complete");TToast.show(RewardVideoActivity.this, "Callback --> rewardPlayAgain complete");UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsPlayedFinished);}@Overridepublic void onVideoError() {Log.e(TAG, "Callback --> rewardPlayAgain error");TToast.show(RewardVideoActivity.this, "Callback --> rewardPlayAgain error");UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsPlayeFailed);}//视频播放完成后,奖励验证回调,rewardVerify:是否有效,rewardAmount:奖励梳理,rewardName:奖励名称@Overridepublic void onRewardVerify(boolean rewardVerify, int rewardAmount, String rewardName, int errorCode, String errorMsg) {String logString = "rewardPlayAgain verify:" + rewardVerify + " amount:" + rewardAmount +" name:" + rewardName + " errorCode:" + errorCode + " errorMsg:" + errorMsg;Log.e(TAG, "Callback --> " + logString);TToast.show(RewardVideoActivity.this, "Callback --> rewardPlayAgain onRewardVerify");UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsRewardVerify);}@Overridepublic void onRewardArrived(boolean isRewardValid, int rewardType, Bundle extraInfo) {Log.e(TAG, "Callback --> rewardPlayAgain has onRewardArrived ");TToast.show(RewardVideoActivity.this, "Callback --> rewardPlayAgain onRewardArrived");UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsRewardVerify);}@Overridepublic void onSkippedVideo() {Log.e(TAG, "Callback --> rewardPlayAgain has onSkippedVideo");TToast.show(RewardVideoActivity.this, "Callback --> rewardPlayAgain onSkippedVideo");UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsSkip);}});mttRewardVideoAd.setDownloadListener(new TTAppDownloadListener() {@Overridepublic void onIdle() {mHasShowDownloadActive = false;}@Overridepublic void onDownloadActive(long totalBytes, long currBytes, String fileName, String appName) {Log.d("DML", "onDownloadActive==totalBytes=" + totalBytes + ",currBytes=" + currBytes + ",fileName=" + fileName + ",appName=" + appName);if (!mHasShowDownloadActive) {mHasShowDownloadActive = true;Log.d("DML", "onDownloadActive==totalBytes=  DownLoad ......." );UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsDownLoading);}}@Overridepublic void onDownloadPaused(long totalBytes, long currBytes, String fileName, String appName) {Log.d("DML", "onDownloadPaused===totalBytes=" + totalBytes + ",currBytes=" + currBytes + ",fileName=" + fileName + ",appName=" + appName);UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsDownLoadPaused);}@Overridepublic void onDownloadFailed(long totalBytes, long currBytes, String fileName, String appName) {Log.d("DML", "onDownloadFailed==totalBytes=" + totalBytes + ",currBytes=" + currBytes + ",fileName=" + fileName + ",appName=" + appName);UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsDownLoadFailed);}@Overridepublic void onDownloadFinished(long totalBytes, String fileName, String appName) {Log.d("DML", "onDownloadFinished==totalBytes=" + totalBytes + ",fileName=" + fileName + ",appName=" + appName);UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsDownLoadSucceed);}@Overridepublic void onInstalled(String fileName, String appName) {Log.d("DML", "onInstalled==" + ",fileName=" + fileName + ",appName=" + appName);UnityPlayer.UnitySendMessage("Sdk","RewardVideoCallBack",CSJAdsStatusType.csjAdsStartInstalle);}});}});}public void SetExpress(boolean exp){isExpress = exp;}private void goToMainActivity(){Intent intent=new Intent(RewardVideoActivity.this, UnityPlayerActivity.class);startActivity(intent);this.finish();}private String getAdType(int type) {switch (type) {case TTAdConstant.AD_TYPE_COMMON_VIDEO:return "普通激励视频,type=" + type;case TTAdConstant.AD_TYPE_PLAYABLE_VIDEO:return "Playable激励视频,type=" + type;case TTAdConstant.AD_TYPE_PLAYABLE:return "纯Playable,type=" + type;case TTAdConstant.AD_TYPE_LIVE:return "直播流,type=" + type;}return "未知类型+type=" + type;}}

脚本创建完毕之后在AndroidMainfest文件中加入如下代码

<activityandroid:name="com.unity3d.player.chuanshanjia.RewardVideoActivity"android:configChanges="keyboard|orientation|screenSize"android:screenOrientation="fullSensor" />

使用方式

public void RewardVideo(String codeId, int orientation,String userId){Log.d(TAG, "RewardVideo  codeId:"+codeId+"orientation"+orientation+"userId"+userId);Intent intent=new Intent(UnityPlayerActivity.this, RewardVideoActivity.class);intent.putExtra("codeId",codeId);intent.putExtra("orientation",orientation);intent.putExtra("userId",userId);startActivity(intent);}

Android 接入穿山甲SDK之激励视频广告相关推荐

  1. Android接入穿山甲SDK并实现开屏广告

    一.穿山甲SDK的接入 0.进入官方下载地址,下载穿山甲AndroidSDK,下载的压缩包里包含.aar的sdk文件和工程demo. 1.将 SDK 压缩包内的 open_ad_sdk.aar 复制到 ...

  2. Android 接入穿山甲SDK之Banner广告

    大家可以先参考我的上一篇博客 信息流广告 传送门 首先创建一个脚本具体内容如下 package com.unity3d.player.chuanshanjia;import android.app.A ...

  3. CocosCreator接入穿山甲SDK(IOS)--激励视屏

    参考 环境:MAC,xCode11,CocosCreator2.3.1 有关CocosCreator与Object-C如何交互的问题,参考文章: https://blog.csdn.net/ZFSR0 ...

  4. Android 接入穿山甲SDK之开屏广告

    大家可以先参考我的上一篇博客介绍了如何集成SDK以及一些工具类传送门 首先创建一个脚本写入如下内容 package com.unity3d.player.chuanshanjia;import and ...

  5. Android 接入穿山甲SDK之插屏广告

    大家可以先参考我的上一篇博客 开屏广告 传送门 首先创建一个脚本具体内容如下 package com.unity3d.player.chuanshanjia;import android.annota ...

  6. Android 接入穿山甲SDK之信息流广告

    大家可以先参考我的上一篇博客 插屏广告 传送门 首先创建一个脚本具体内容如下 package com.unity3d.player.chuanshanjia;import android.annota ...

  7. Android 接入穿山甲激励视频广告步骤与错误总结

    1.先去穿山甲官网,注册登录账号 2.侧边栏->广告变现->流量->应用->新建应用 3.侧边栏->广告变现->流量->代码位->新建代码位 4. 侧边 ...

  8. 穿山甲sdk激励视频广告关闭按钮引发的bug排查及解决

    项目中接入了穿山甲广告,其中包括图文广告和视频广告,后期发现一个偶现的问题,就是看完激励视频广告后,点击视频页面的关闭按钮,此时回到了app源生页面,UI卡住了,本来看完视频有个加分操作,现在没了.排 ...

  9. 穿山甲和广点通激励视频广告打开失败的异常处理

    由于项目里接入了广告,包括但不限于穿山甲sdk和广点通sdk,视频广告是收益比较高的广告,项目里面出现的地方比较多.流程一般都是UI上有个按钮,点击按钮,请求到激励视频广告,然后直接打开该广告,也就是 ...

  10. cocos creator 接QQ小游戏小程序RewardedVideoAd 激励视频广告sdk

    cocos creator 接QQ小游戏小程序RewardedVideoAd 激励视频广告sdk 开发者工具 0.1.26 版本开始支持调试广告组件 话说你们看完为什么不留言点赞? 首先,你需要初始化 ...

最新文章

  1. vue单向数据流与双向绑定两者区别
  2. 市电会引起UPS产生故障吗
  3. 梯度下降法,牛顿法,高斯-牛顿迭代法,附代码实现
  4. Qt修炼手册9_Ui名字空间及setupUi()原理解读
  5. java方法不可覆盖_详解Java构造方法为什么不能覆盖,我的钻牛角尖病又犯了.......
  6. 练习mvc做一个知识库(二)
  7. c语言单链表超市出库,c语言-单链表(二)
  8. 一文带你入门C++,类与对象、6个默认成员函数、this指针以及static关键字。
  9. tomcat 设置编码格式
  10. HTML静态网页作业-HTML5+CSS大作业——年会抽奖网页设计(1页)
  11. 服务器安装找不到lsi驱动,IBM 服务器 SAS Raid LSI Windows2008 硬盘 驱动
  12. OpenCV实现监控移动侦测
  13. 基于物联网的防盗报警器设计与实现
  14. WCF基础教程(三)——WCF通信过程及配置文件解析
  15. 江苏中理网络科技有限公司介绍
  16. 移动硬盘加密方法加密后对硬盘读写的影响
  17. Redis 如何实现库存扣减操作和防止被超卖
  18. Android onClick 按钮单击事件 四种常用写法
  19. 【GPLT】L1-057 PTA使我精神焕发
  20. 中山起湾周边学校有计算机吗,【趣味数据】乐有家:入学对口小区一直变?中山东区入学住哪里比较好...

热门文章

  1. Java银行账户管理系统实验总结
  2. CSS实现兼容浏览器的文字阴影效果
  3. 如何使用Python将Word转换为PDF文件?
  4. word 尾注后边加致谢
  5. php太平洋时间转成北京时间,北京时间 → 太平洋时间 换算表 和太平洋时间 → 北京时间 换算表...
  6. 读书百客:《山坡羊·北邙山怀古》赏析
  7. switch 连接 LG 48GQ900 没有声音
  8. html给图片添加边框
  9. vue+element表格 苹果自带浏览器兼容问题
  10. Ubuntu下实现触摸板多指手势操作