CocosCreator2.3.4,Android APP,接入穿山甲SDK的激励视频

文章时间:2020年6月13日。

工具:

CocosCreator : 2.3.4  (以下简称CCC)

Android Studio : 4.0  (以下简称AS)

SDK : Android 9.0(Level 28)

NDK : 29.0.3(最新版本是30.0.0)

 

本篇文章只针对CCC打包成Android应用的过程

CCC项目构建时我的选择项:(我这是竖屏游戏,各位自己构建时注意设备方向的选项)

现在基本上都是安卓9.0系统,我自己手机时安卓10,有几个同事的是安卓9,所以选择的API等级是android-28,28对应的是安卓9.0

这是Android Studio4.0的SDK Manager界面

 

这些都准备好后开始进入正题:接入穿山甲SDK

穿山甲官网审核完之后去接入中心看接入文档。

咱们一步一步来

第一步导入包

他这里写的是安卓原生系统导入的过程

那么CCC的包怎么放呢?于是我查找CCC官网的文档看到以下说明

 

既然我们是要打包成APP形式,那么文件就放在APP的libs文件夹

接下来就是全局配置

实际上CCC工程的game目录里有个Androidmainfast

已经配置好了,那么无视官网的权限配置即可

接下来接入文档的内容让我也懵逼了,

在官方Demo里面搜到的也是

各种看不懂,,然后我百度各种文章

其中有一篇文章告诉我需要复制TTAdManagerHolder.java这个文件到

org.cocos2dx.javascript这个包下面,改包名。

结果如下:

然后初始化这个类。

在AppActivity类里加上

static public AppActivity activity;
private String TAG = "cocos";
private TTAdNative mTTAdNative;
private TTRewardVideoAd mttRewardVideoAd;

在onCreate方法里加上

TTAdManagerHolder.init(this);
activity = this;
//step1:初始化sdk
TTAdManager ttAdManager = TTAdManagerHolder.get();
//step2:(可选,强烈建议在合适的时机调用):申请部分权限,如read_phone_state,防止获取不了imei时候,下载类广告没有填充的问题。
TTAdManagerHolder.get().requestPermissionIfNecessary(this);
//step3:创建TTAdNative对象,用于调用广告请求接口
mTTAdNative = ttAdManager.createAdNative(getApplicationContext());
loadAd("穿山甲的游戏id", TTAdConstant.VERTICAL);

结果如下:

在AppActivity里增加以下方法:

static public void showAd(String codeId) {
        activity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (activity.mttRewardVideoAd != null) {
                    //step6:在获取到广告后展示
                    //该方法直接展示广告
                    activity.mttRewardVideoAd.showRewardVideoAd(activity);
                    //展示广告,并传入广告展示的场景
                    activity.mttRewardVideoAd = null;
                } else {
                    Log.e(activity.TAG, "请先加载广告");
                }
            }
        });
    }

    public void sendReward() {
        activity.runOnGLThread(new Runnable() {
            @Override
            public void run() {
                String js = "cc.NativeBridge.rewardedAdCallback();";
                Cocos2dxJavascriptJavaBridge.evalString(js);
                Log.e(TAG,"rewardVideoAd evalString");
            }
        });
    }

    private void loadAd(final String codeId, int orientation) {
        //step4:创建广告请求参数AdSlot,具体参数含义参考文档
        AdSlot adSlot = new AdSlot.Builder()
                .setCodeId(codeId)
                .setSupportDeepLink(true)
                .setImageAcceptedSize(1080, 1920)
                .setRewardAmount(1)  //奖励的数量
                .setUserID("user123")//用户id,必传参数
                .setOrientation(orientation) //必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL
                .build();
        //step5:请求广告
        mTTAdNative.loadRewardVideoAd(adSlot, new TTAdNative.RewardVideoAdListener() {
            @Override
            public void onError(int code, String message) {
                Log.e(TAG, message);
            }

            //视频广告加载后,视频资源缓存到本地的回调,在此回调后,播放本地视频,流畅不阻塞。
            @Override
            public void onRewardVideoCached() {
                Log.e(TAG, "rewardVideoAd video cached");
            }

            //视频广告的素材加载完毕,比如视频url等,在此回调后,可以播放在线视频,网络不好可能出现加载缓冲,影响体验。
            @Override
            public void onRewardVideoAdLoad(TTRewardVideoAd ad) {
                Log.e(TAG, "rewardVideoAd loaded");
                mttRewardVideoAd = ad;
                mttRewardVideoAd.setRewardAdInteractionListener(new TTRewardVideoAd.RewardAdInteractionListener() {

                    @Override
                    public void onAdShow() {
                        Log.e(TAG, "rewardVideoAd show");
                    }

                    @Override
                    public void onAdVideoBarClick() {
                        Log.e(TAG, "rewardVideoAd bar click");
                    }

                    @Override
                    public void onAdClose() {
                        Log.e(TAG, "rewardVideoAd close");
                        //关闭后再次加载广告
                        loadAd(codeId, TTAdConstant.VERTICAL);
                    }

                    //视频播放完成回调
                    @Override
                    public void onVideoComplete() {
                        Log.e(TAG,"rewardVideoAd complete");
                    }

                    @Override
                    public void onVideoError() {
                        Log.e(TAG,"rewardVideoAd error");
                    }

                    //视频播放完成后,奖励验证回调,rewardVerify:是否有效,rewardAmount:奖励梳理,rewardName:奖励名称
                    @Override
                    public void onRewardVerify(boolean rewardVerify, int rewardAmount, String rewardName) {
                        Log.e(TAG,"rewardVideoAd rewardVerify");
                        sendReward();
                    }

                    @Override
                    public void onSkippedVideo() {
                    }
                });
            }
        });
    }

 

 

再找到你工程App文件夹里的proguard-roles.pro文件

新增代码混淆的相关代码

 

再次打包到手机,App启动提示获取权限,那么你加载广告即生效成功。

之后添加权限到AndroidManifest.xml,不要加到game文件夹里,经过测试修改game文件夹里的AndroidManifest.xml权限获取无效,需要修改app文件夹里的AndroidManifest.xml

<!-- 为穿山甲sdk新增 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />

 

写在最后

整个穿山甲SDK的过程就是

1.导入sdk

2.初始化sdk

3.添加权限到AndroidManifest.xml

4.游戏启动的时候调用loadAd用来缓存广告视频

5.CCC工程使用jsb调用showAd即可

 

有任何问题可以在文章下方留言,我看到会解答的。

感谢各位观看本教程,希望能帮助到大家。

教程结束。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值