关于接入今日头条激励广告心得(cocos2d-x)

 

先记录的是Android sdk 的接入,ide环境Android studio 工具:

1.申请后台账号并创建游戏app,生成appid 和创建广告 生成slot id

2.下载最新sdk,并导入aar及sdk依赖的jar包,我这里只加载了

depedencies {
    compile(name: 'open_ad_sdk', ext: ‘aar')
    compile 'pl.droidsonroids.gif:android-gif-drawable:1.2.6'
}

3.AndroidManifest配置

a.添加权限

<!--必须要有的权限-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<!--最好能提供的权限-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

b.适配Anroid7.0以及8.0

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>
<provider
    android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider"
    android:authorities="${applicationId}.union_adsdk_tt"
    android:exported="false"/>

在res/xml目录下,新建一个xml文件file_paths,在该文件中添加如下代码:4.

<?xml version="1.0" encoding="utf-8"?>  
<paths xmlns:android="http://schemas.android.com/apk/res/android">  

    <external-files-path name="external_files_path" path="Download" />  
    <!--为了适配所有路径可以设置 path = "." -->  
</paths>

4.激励广告的接入核心代码:

 

// kk
    public class MyHandler extends Handler {

        public MyHandler() {

        }

        public MyHandler(Looper L) {
            super(L);
        }

        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 0) {
                TTAdSdk.init(mainContext,
                        new TTAdConfig.Builder()
                                .appId("5016253")
                                .useTextureView(false) //使用TextureView控件播放视频,默认为SurfaceView,当有SurfaceView冲突的场景,可以使用TextureView
                                .appName("APP测试媒体")
                                .titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)
                                .allowShowNotify(true) //是否允许sdk展示通知栏提示
                                .allowShowPageWhenScreenLock(true) //是否在锁屏场景支持展示广告落地页
                                .debug(false) //测试阶段打开,可以通过日志排查问题,上线时去除该调用
                         .directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI,TTAdConstant.NETWORK_STATE_3G)
//允许直接下载的网络状态集合
                                .supportMultiProcess(false) //是否支持多进程,true支持
                                .build());

                ttAdManager = TTAdSdk.getAdManager();
                mTTAdNative = TTAdSdk.getAdManager().createAdNative(mainContext);
            }
            else if (msg.what == 1) {
                loadAd("916253714", TTAdConstant.VERTICAL);
            }
            else if(msg.what == 2){

            }
        }

        private boolean mHasShowDownloadActive = false;

        private void loadAd(String codeId, int orientation) {
            //step4:创建广告请求参数AdSlot,具体参数含义参考文档
            AdSlot adSlot = new AdSlot.Builder()
                    .setCodeId(codeId)
                    .setSupportDeepLink(true)
                    .setImageAcceptedSize(1080, 1920)
                    .setRewardName("金币") //奖励的名称
                    .setRewardAmount(3)  //奖励的数量
                    .setUserID("user123")//用户id,必传参数
                    .setMediaExtra("media_extra") //附加参数,可选
                    .setOrientation(orientation) //必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL
                    .build();
            //step5:请求广告
            mTTAdNative.loadRewardVideoAd(adSlot, new TTAdNative.RewardVideoAdListener() {
                @Override
                public void onError(int code, String message) {
                    // Toast.makeText(CurrentActivity, message, Toast.LENGTH_SHORT).show();
                    //UnityPlayer.UnitySendMessage("TouTiaoSDKMgr", "UnCanPlay", "");

                }

                //视频广告加载后,视频资源缓存到本地的回调,在此回调后,播放本地视频,流畅不阻塞。
                @Override
                public void onRewardVideoCached() {
                    Toast.makeText(mainContext, "onRewardVideoCached", Toast.LENGTH_SHORT).show();
                    //UnityPlayer.UnitySendMessage("TouTiaoSDKMgr", "CanPlay", "");
                    if(mttRewardVideoAd != null){
                        mttRewardVideoAd.showRewardVideoAd(mainContext);
                        mttRewardVideoAd = null;
                    }

                }

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

                        @Override
                        public void onAdShow() {
                            // Toast.makeText(CurrentActivity, "onAdShow", Toast.LENGTH_SHORT).show();
                            //UnityPlayer.UnitySendMessage("TouTiaoSDKMgr", "AdShow", "");
                        }

                        @Override
                        public void onAdVideoBarClick() {
                            // Toast.makeText(CurrentActivity, "onAdVideoBarClick", Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onAdClose() {
                            // Toast.makeText(CurrentActivity, "onAdClose", Toast.LENGTH_SHORT).show();
                        }

                        //视频播放完成回调
                        @Override
                        public void onVideoComplete() {
                            //Toast.makeText(CurrentActivity, "onVideoComplete", Toast.LENGTH_SHORT).show();
              //UnityPlayer.UnitySendMessage("TouTiaoSDKMgr", "OnAdPlayComplete", "");
                        }

                        //视频播放完成后,奖励验证回调,rewardVerify:是否有效,rewardAmount:奖励梳理,rewardName:奖励名称
                        @Override
                        public void onRewardVerify(boolean rewardVerify, int rewardAmount, String rewardName) {
                            // Toast.makeText(CurrentActivity, rewardVerify+" "+rewardAmount+"  "+rewardName, Toast.LENGTH_SHORT).show();
   }

                        @Override
                        public void onVideoError() {
                            // Toast.makeText(CurrentActivity, "onVideoError", Toast.LENGTH_SHORT).show();
                            //UnityPlayer.UnitySendMessage("TouTiaoSDKMgr", "OnPlayFail", "");
                        }

                        public void onSkippedVideo() {
                            //TToast.show(RewardVideoActivity.this, "rewardVideoAd has onSkippedVideo");
                        }
                });
                    mttRewardVideoAd.setDownloadListener(new TTAppDownloadListener() {
                        @Override
                        public void onIdle() {
                            mHasShowDownloadActive = false;

                        }

                        @Override
                        public void onDownloadActive(long totalBytes, long currBytes, String fileName, String appName) {
                            if (!mHasShowDownloadActive) {
                                mHasShowDownloadActive = true;
                                // Toast.makeText(CurrentActivity, "下载中,点击下载区域暂停", Toast.LENGTH_SHORT).show();
                            }
                        }

                        @Override
                        public void onDownloadPaused(long totalBytes, long currBytes, String fileName, String appName) {
                            //  Toast.makeText(CurrentActivity, "下载暂停,点击下载区域继续", Toast.LENGTH_SHORT).show();
                        }
            @Override
                        public void onDownloadFailed(long totalBytes, long currBytes, String fileName, String appName) {
                            //  Toast.makeText(CurrentActivity, "下载失败,点击下载区域重新下载", Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onDownloadFinished(long totalBytes, String fileName, String appName) {
                            // Toast.makeText(CurrentActivity, "下载失败,点击下载区域重新下载", Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onInstalled(String fileName, String appName) {
                            // Toast.makeText(CurrentActivity, "安装完成,点击下载区域打开", Toast.LENGTH_SHORT).show();
                        }
                    });
                }
            });
        }
    }
特别注意:

由于Android studio 的版本不兼容问题,可能会存在加入广告sdk 后打包的应用不能正常运行,

可尝试加入 在gradle.properties 文件中修改

PROP_APP_ABI=armeabi-v7a:x86:arm64-v8a

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值