Android端穿山甲SDK集成

Android端穿山甲SDK集成,第1张

概述Android端穿山甲SDK集成SDK接入穿山甲平台上创建测试状态的应用ID和广告位ID(ps:测试集成完毕后再把应用及对应的代码位改成正式状态)(ps:应用ID和代码位ID是对应关系一个应用可以对应多个代码位ID)应用ID对应demo中的APPID广告位ID对应demo中的CodeId将本SDK压缩包 AndroID端穿山甲SDK集成SDK接入穿山甲平台上创建测试状态的应用ID和广告位ID (ps:测试集成完毕后再把应用及对应的代码位改成正式状态)
(ps:应用ID和代码位ID是对应关系 一个应用可以对应多个代码位ID)
应用ID 对应demo中的APPID
广告位ID 对应demo中的CodeID


将本SDK压缩包内的open_ad_sdk.aar添加到build.gradle中:
repositorIEs {    flatDir {        dirs 'libs'    }}depedencIEs {    compile(name: 'open_ad_sdk', ext: ‘aar')}
添加权限
<!--必要权限--><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" /><!-- 如果有视频相关的广告且使用textureVIEw播放,请务必添加,否则黑屏 --><uses-permission androID:name="androID.permission.WAKE_LOCK" />
适配AnroID7.0及以上
注:主要是涉及到广告下载
<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>

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

<?xml version="1.0" enCoding="utf-8"?><paths xmlns:androID="http://schemas.androID.com/apk/res/androID">   <!--为了适配所有路径可以设置 path = "." -->    <external-path name="tt_external_root" path="." />   <external-path name="tt_external_download" path="Download" />   <external-files-path name="tt_external_files_download" path="Download" />   <files-path name="tt_internal_file_download" path="Download" />   <cache-path name="tt_internal_cache_download" path="Download" /></paths>

为了适配下载和安装相关功能,在工程中引用的包 com.androID.support:support-v4:24.2.0
使用24.2.0以及以上版本

运行环境配置
<uses-sdk androID:minSdkVersion="14" androID:targetSdkVersion="24" />

NDK配置
注:可根据自己的需求进行导入
SDK中使用的so文件支持五种架构:x86,x86_64,armeabi,armeabi-v7a,arm64-v8a 如果您应用中支持的架构超出这 五种,请在build.gradle中使用abiFilters选择支持的架构。如下所示: ndk { // 设置支持的 SO 库构架,注意这里要根据你的实际情况来设置 abiFilters ‘armeabi-v7a’, ‘arm64-v8a’, ‘x86’, ‘x86_64’, ‘armeabi’ }

初始化SDK
在Application#onCreate()方法中调用以下代码来初始化穿山甲SDK。 SDK已支持多进程,如果明确某个进程不会使用到广告SDK,可以只针对特定进程初始化广告SDK
注:TTAdManagerHolder保证处于单例状态

 private static TTAdConfig buildConfig(Context context) {        return new TTAdConfig.Builder()                .appID("5001121")                .useTextureVIEw(true) //使用TextureVIEw控件播放视频,默认为SurfaceVIEw,当有SurfaceVIEw冲突的场景,可以使用TextureVIEw                .appname("APP测试媒体")                .Titlebartheme(TTAdConstant.Title_bar_theme_DARK)                .allowShowNotify(true) //是否允许sdk展示通知栏提示                .allowShowPageWhenScreenLock(true) //是否在锁屏场景支持展示广告落地页                .deBUG(true) //测试阶段打开,可以通过日志排查问题,上线时去除该调用                .directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI, TTAdConstant.NETWORK_STATE_3G) //允许直接下载的网络状态集合                .supportMultiProcess(true)//是否支持多进程                .needClearTaskreset()                //.httpStack(new MyOkStack3())//自定义网络库,demo中给出了okhttp3版本的样例,其余请自行开发或者咨询工作人员。                .build();    }
appID是账号下申请的应用ID(ps:以5开头7位)useTextureVIEw有SurfaceVIEw冲突的场景,可以使用TextureVIEw(ps:如果出现黑屏
1.可以检查一下清单文件中最后一条权限部分
2.尝试更换TextureVIEw进行加载视频
3.尝试开启硬件加速androID:harDWareAccelerated=“true”)appname(ps:可随意填写不为空的字符串)Titlebartheme(ps:主题 如果不存在冲突可使用默认主题)allowShowNotify(ps:涉及到下载通知栏部分)allowShowPageWhenScreenLock(ps:锁屏广告显示部分)directDownloadNetworkType(ps:可根据具体的产品需求填写 目前支持WiFi和4G及任何情况下都可以d出二次d窗 如果需要任何情况下都d窗 ()里直接写空就可以了)supportMultiProcess(ps:是否支持多进程)
1.如果项目是多进程 需要设置true 多进程中如果每个进程中都需要展示广告 必须每个进程都进行SDK的初始化
2.如果项目是单进程必须更改为false加载广告

注:加载和展示广告都需要放到主线程中

构建TTAdManager对象
TTAdManager对象为整个SDK的入口接口,可用于广告获取、权限请求、版本号获取
TTAdManager ttAdManager = TTAdManagerHolder.get();
申请部分权限 (建议每次广告对象加载之后都需要申请一次 ps:开屏视频不需要)
TTAdManagerHolder.get().requestPermissionIfNecessary(this);
创建TTAdNative对象(用于调用广告请求接口)
TTAdNative mTTAdNative = ttAdManager.createAdNative(getApplicationContext());
构建AdSlot对象

注:AdSlot中的参数一旦在代码中填写 会以代码中填写的为主

AdSlot adSlot = new AdSlot.Builder()    // 必选参数 设置您的CodeID    .setCodeID(“900486272")    // 必选参数 设置广告图片的最大尺寸及期望的图片宽高比,单位Px    // 注:必填字段,期望的图片尺寸,返回尺寸可能有差异    .setimageAcceptedSize(640, 320)    //模板广告需要设置期望个性化模板广告的大小,单位dp,代码位是否属于个性化模板广告,请在穿山甲平台查看    .setExpressVIEwAcceptedSize(expressVIEwWIDth, expressVIEwHeight)    // 可选参数 设置是否支持deeplink    .setSupportDeeplink(true)    // 可选参数,针对信息流广告设置每次请求的广告返回个数,最多支持3个    .setAdCount(1)    //请求原生广告时候需要设置,参数为TYPE_BANNER或TYPE_INteraCTION_AD    .setNativeAdType(AdSlot.TYPE_BANNER)    //激励视频奖励的名称,针对激励视频参数    .setRewardname("金币")    //激励视频奖励个数    .setRewardamount(3)    //用户ID,使用激励视频必传参数    //表来标识应用侧唯一用户;若非服务器回调模式或不需sdk透传,可设置为空字符串    .setUserID("user123")    //设置期望视频播放的方向,为TTAdConstant.HORIZONTAL或TTAdConstant.VERTICAL    .setorIEntation(orIEntation)    //激励视频奖励透传参数,字符串,如果用Json对象,必须使用序列化为String类型,可为空    .setMediaExtra("media_extra")    .build();
setCodeID是账号下申请的应用ID(ps:以9开头9位)setimageAcceptedSize(单位px ps:开屏广告尺寸动态获取屏幕宽高)setExpressVIEwAcceptedSize(单位dp ps:模板类型的广告可以填写 以代码中填写的为主 激励视频和全屏视频必须填写这个部分)广告类型

注:模板和非模板代码位的区分
可根据截图部分在平台上查看创建的代码位是否是模板 使用不同的方法获取广告


注:以下部分都是SDK直接返回一个vIEw 不支持获取vIEw的信息 开发者直接展示vIEw

注:模板类型的代码位在设置AdSlot广告对象的时候一定要设置该方法setExpressVIEwAcceptedSize

注:在广告加载展示完毕后 在Activity的onDestroy方法中把广告对象置为null

个性化模板信息流 方法:loadNativeExpressAd
使用方法:
mTTAdNative.loadNativeExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() {            @OverrIDe            public voID one rror(int code, String message) {            }            @OverrIDe            public voID onNativeExpressAdLoad(List<TTNativeExpressAd> ads) {                mTTAd.render();            }        });

onNativeExpressAdLoad回调直接返回的是一个集合
在请求的时候建议最多请求3条 SDK最多返回3条
render直接放到广告返回成功的回调中

个性化模板banner 方法:loadBannerExpressAd
mTTAdNative.loadBannerExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() {            @OverrIDe            public voID one rror(int code, String message) {            }            @OverrIDe            public voID onNativeExpressAdLoad(List<TTNativeExpressAd> ads) {             mTTAd.render();            }        });

setSlIDeIntervalTime设置轮播的时间
render直接放到广告返回成功的回调中

个性化模板插屏 方法:loadInteractionExpressAd
mTTAdNative.loadInteractionExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() {            @OverrIDe            public voID one rror(int code, String message) {            }            @OverrIDe            public voID onNativeExpressAdLoad(List<TTNativeExpressAd> ads) {                mTTAd.render();            }        });

render直接放到广告返回成功的回调中

全屏广告 方法:loadFullScreenVIDeoAd
//模板广告需要设置期望个性化模板广告的大小,单位dp,全屏视频场景,只要设置的值大于0即可
必须设置:setExpressVIEwAcceptedSize(500,500)
mTTAdNative.loadFullScreenVIDeoAd(adSlot, new TTAdNative.FullScreenVIDeoAdListener() {          @OverrIDe                public voID one rror(int code, String message) {                }                @OverrIDe                public voID onFullScreenVIDeoAdLoad(TTFullScreenVIDeoAd ad) {                }                @OverrIDe                public voID onFullScreenVIDeoCached() {            }        });

//展示广告,并传入广告展示的场景
mttFullVIDeoAd.showFullScreenVIDeoAd(FullScreenVIDeoActivity.this, TTAdConstant.RitScenes.GAME_GIFT_BONUS, null);
注:展示广告放到主进程中

开屏广告 方法:loadSplashAd
非模板开屏要设置 单位px
setimageAcceptedSize(1080, 1920)
模板开屏需设置 (非模板开屏一定不要设置该方法) 单位dp
setExpressVIEwAcceptedSize(expressVIEwWIDth, expressVIEwHeight)
mTTAdNative.loadSplashAd(adSlot, new TTAdNative.SplashAdListener() {            @OverrIDe            @MainThread            public voID one rror(int code, String message) {            }            @OverrIDe            @MainThread            public voID onTimeout() {            }            @OverrIDe            @MainThread            public voID onSplashAdLoad(TTSplashAd ad) {\            }        }, AD_TIME_OUT);
激励视频 方法:loadRewardVIDeoAd
//模板广告需要设置期望个性化模板广告的大小,单位dp,全屏视频场景,只要设置的值大于0即可
必须设置:setExpressVIEwAcceptedSize(500,500)
mTTAdNative.loadRewardVIDeoAd(adSlot, new TTAdNative.RewardVIDeoAdListener() {            @OverrIDe            public voID one rror(int code, String message) {                           }            //视频广告加载后,视频资源缓存到本地的回调,在此回调后,播放本地视频,流畅不阻塞。            @OverrIDe            public voID onRewardVIDeoCached() {                        }            @OverrIDe            public voID onRewardVIDeoAdLoad(TTRewardVIDeoAd ad) {                            }        });

为保证视频的流程度建议show广告放在onRewardVIDeoCached回调里
mttRewardVIDeoAd.showRewardVIDeoAd(RewardVIDeoActivity.this, TTAdConstant.RitScenes.CUSTOMIZE_SCEnes, “scenes_test”);
注:展示广告放到主进程中

个性化模板Draw信息流 方法:loadExpressDrawFeedAd
mTTAdNative.loadExpressDrawFeedAd(adSlot, new TTAdNative.NativeExpressAdListener() {            @OverrIDe            public voID one rror(int code, String message) {            }            @OverrIDe            public voID onNativeExpressAdLoad(List<TTNativeExpressAd> ads) {            }        });

后续有什么问题 可以下方留言方便讨论!

总结

以上是内存溢出为你收集整理的Android端穿山甲SDK集成全部内容,希望文章能够帮你解决Android端穿山甲SDK集成所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1062967.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存