接入穿山甲激励广告

1.初始化
在MainActivity的onCreate中初始化
protected void onCreate(){
    ..//
    adInit();
}
//代码部分
TTAdManager ttAdManager;
private TTAdNative mTTAdNative;
private TTRewardVideoAd mttRewardVideoAd;
private void adInit(){
    //强烈建议在应用对应的Application#onCreate()方法中调用,避免出现content为null的异常
    TTAdSdk.init(this,
            new TTAdConfig.Builder()
                    .appId(Constants.App_Ad_key)
                    .useTextureView(true) //默认使用SurfaceView播放视频广告,当有SurfaceView冲突的场景,可以使用TextureView
                    .appName(Constants.App_Name)
                    .titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)//落地页主题
                    .allowShowNotify(true) //是否允许sdk展示通知栏提示,若设置为false则会导致通知栏不显示下载进度
                    .debug(true) //测试阶段打开,可以通过日志排查问题,上线时去除该调用
                    .directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI) //允许直接下载的网络状态集合,没有设置的网络下点击下载apk会有二次确认弹窗,弹窗中会披露应用信息
                    .supportMultiProcess(false) //是否支持多进程,true支持
                    .build(),
            new TTAdSdk.InitCallback(){
                /**
                 * 初始化成功回调
                 * 注意:开发者需要在success回调之后再去请求广告
                 */
                @Override
                public void success(){
                    Log.e(TAG, "init suc");
                    ttAdManager = TTAdSdk.getAdManager();
                    mTTAdNative = ttAdManager.createAdNative(activity);
                }
                /**
                 * @param code 初始化失败回调错误码
                 * @param msg 初始化失败回调信息
                 */
                @Override
                public void fail(int code, String msg){
                    Log.e(TAG, "init fail"+code+"--"+msg);
                }
            }
    );
}
2.导入jar包
3.为了适配下载和安装相关功能
implementation 'androidx.legacy:legacy-support-v4:1.0.0'

4.防止初始化报错 code=4201 msg=no initializer
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:28.0.0'
5.AndroidMainfest.xml配置
加权限
<!-- 如果视频广告使用textureView播放,请务必添加,否则黑屏 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!--必要权限,解决安全风险漏洞,发送和注册广播事件需要调用带有传递权限的接口-->
<permission      android:name="${applicationId}.openadsdk.permission.TT_PANGOLIN"
    android:protectionLevel="signature" />

<uses-permission android:name="${applicationId}.openadsdk.permission.TT_PANGOLIN" />
application 需要配置网络部分,否则网络不可用
android:networkSecurityConfig="@xml/network_security_config"
application标签里,activity同级标签加入
<provider
    android:name="com.bytedance.sdk.openadsdk.TTFileProvider"
    android:authorities="${applicationId}.TTFileProvider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>
新建file_paths.xml文件
6.调起广告代码
private void loadAd(String codeId){
    AdSlot adSlot = new AdSlot.Builder()
            .setCodeId(codeId)
            //模板广告需要设置期望个性化模板广告的大小,单位dp,激励视频场景,只要设置的值大于0即可
            .setExpressViewAcceptedSize(500,500)
            .setSupportDeepLink(true)
            .setOrientation(TTAdConstant.VERTICAL)//必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL
            .setAdLoadType(LOAD)//推荐使用,用于标注此次的广告请求用途为预加载(当做缓存)还是实时加载,方便后续为开发者优化相关策略
            .build();
    mTTAdNative.loadRewardVideoAd(adSlot, new TTAdNative.RewardVideoAdListener() {
        @Override
        public void onError(int code, String message) {
            Log.e(TAG, "Callback --> onError: " + code + ", " + String.valueOf(message));
        }
        //视频广告加载后,视频资源缓存到本地的回调,在此回调后,播放本地视频,流畅不阻塞。
        @Override
        public void onRewardVideoCached() {
            Log.e(TAG, "onRewardVideoCached");
        }
        @Override
        public void onRewardVideoCached(TTRewardVideoAd ad) {
            Log.e(TAG, "Callback --> onRewardVideoCached");
            if (mttRewardVideoAd != null) {
                //step6:在获取到广告后展示,强烈建议在onRewardVideoCached回调后,展示广告,提升播放体验
                //(不要在这里播放广告,等待视频加载完成,会出现一段空白期,体验不好,除非你弄了预加载)
                //展示广告,并传入广告展示的场景
                //mttRewardVideoAd.showRewardVideoAd(activity, TTAdConstant.RitScenes.CUSTOMIZE_SCENES, "scenes_test");
                //mttRewardVideoAd = null;
            } else {
                Log.e(TAG, "请先加载广告");
            }
        }
        //视频广告的素材加载完毕,比如视频url等,在此回调后,可以播放在线视频,网络不好可能出现加载缓冲,影响体验。
        @Override
        public void onRewardVideoAdLoad(TTRewardVideoAd ad) {
            Log.e(TAG, "Callback --> onRewardVideoAdLoad");
            mttRewardVideoAd = ad;
            mttRewardVideoAd.setRewardAdInteractionListener(new TTRewardVideoAd.RewardAdInteractionListener() {
                @Override
                public void onAdShow() {
                    Log.d(TAG, "Callback --> rewardVideoAd show");
                }
                @Override
                public void onAdVideoBarClick() {
                    Log.d(TAG, "Callback --> rewardVideoAd bar click");
                }
                @Override
                public void onAdClose() {
                    Log.d(TAG, "Callback --> rewardVideoAd close");
                    nativeAndroid.callExternalInterface("sendAdClose", "");
                }
                //视频播放完成回调
                @Override
                public void onVideoComplete() {
                    Log.d(TAG, "Callback --> rewardVideoAd complete");
                }
                @Override
                public void onVideoError() {
                    Log.e(TAG, "Callback --> rewardVideoAd error");
                }
                //视频播放完成后,奖励验证回调,rewardVerify:是否有效,rewardAmount:奖励梳理,rewardName:奖励名称
                @Override
                public 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, "Callback --> " + logString);
                    nativeAndroid.callExternalInterface("sendAdCanGetR", rewardVerify?"1":"0");
                }
                @Override
                public void onRewardArrived(boolean var1, int var2, Bundle var3){
                    Log.e(TAG, "onRewardArrived --> " + var1);
                }
                @Override
                public void onSkippedVideo() {
                    Log.e(TAG, "Callback --> rewardVideoAd has onSkippedVideo");
                }
            });
            //在这里播放广告,它是获取到广告视频的url就播放,虽然网速不好会卡,但是现在网速这么快,不会卡的
            //展示广告,并传入广告展示的场景
            //mttRewardVideoAd.showRewardVideoAd(activity, TTAdConstant.RitScenes.CUSTOMIZE_SCENES, "scenes_test");
            //mttRewardVideoAd = null;
        }
    });
}
7.在onDestory中销毁对象
protected void onDestroy() {
    super.onDestroy();
    if (mttRewardVideoAd != null) {
        mttRewardVideoAd = null;
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值