Android端穿山甲SDK集成

Android端穿山甲SDK集成

SDK接入

  • 穿山甲平台上建立测试状态的应用ID和广告位ID (ps:测试集成完毕后再把应用及对应的代码位改为正式状态)
    (ps:应用ID和代码位ID是对应关系 一个应用能够对应多个代码位ID)
    应用ID 对应demo中的APPID
    广告位ID 对应demo中的CodeId
    应用ID
    代码位ID




  • 将本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,在该文件中添加以下代码:android

<?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以及以上版本
express

  • 运行环境配置
<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’ }

    json

  • 初始化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及任何状况下均可以弹出二次弹窗 若是须要任何状况下都弹窗 ()里直接写空就能够了)
  • supportMultiProcess(ps:是否支持多进程)
    1.若是项目是多进程 须要设置true 多进程中若是每一个进程中都须要展现广告 必须每一个进程都进行SDK的初始化
    2.若是项目是单进程必须更改成false

加载广告

注:加载和展现广告都须要放到主线程中bash

  • 构建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方法中把广告对象置为nullapp

  • 个性化模板信息流 方法:loadNativeExpressAd
    使用方法:
mTTAdNative.loadNativeExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() {
            @Override
            public void onError(int code, String message) {
            }

            @Override
            public void onNativeExpressAdLoad(List<TTNativeExpressAd> ads) {
                mTTAd.render();
            }
        });

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

ide

  • 个性化模板banner 方法:loadBannerExpressAd
mTTAdNative.loadBannerExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() {
            @Override
            public void onError(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 onError(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 onError(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 onError(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 onError(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 onError(int code, String message) {
            }

            @Override
            public void onNativeExpressAdLoad(List<TTNativeExpressAd> ads) {
            }
        });

后续有什么问题 能够下方留言方便讨论!

相关文章
相关标签/搜索