Android端集成穿山甲SDK

SDK接入

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





1.导入 aar 及 SDK 依赖的 jar 包

将本 SDK 压缩包内的 open_ad_sdk.aar 复制到 Application Module/libs 文件夹(没有的话须手动创建), 并将以下代码添加到您 app 的

android{

repositories {

    flatDir {

        dirs 'libs'

    }

}

depedencies {

    //穿山甲SDK

implementation(name:'open_ad_sdk',ext:'aar')

}



2.添加权限

穿山甲SDK建议您添加下述权限,并建议在您的隐私协议中向开发者声明穿山甲SDK会获取下述权限并应用于广告投放。

<!--必要权限-->

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!--可选权限-->

<uses-permission android:name="android.permission.READ_PHONE_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" />

注意:穿山甲SDK不强制获取以上权限,即使没有获取可选权限SDK也能正常运行;获取以上权限将帮助穿山甲优化投放广告精准度和用户的交互体验,提高eCPM。

适配 Android7.0 及以上

如果您的应用需要在 Android7.0 及以上环境运行,请在 AndroidManifest 中添加如下代码:

(加入到清单application中就可以)

<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>


3.在 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>


4.provider 配置(在清单中加入到第2步下边就可以  )

注意:单进程或多进程都必须配置

<provider

    android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider"

    android:authorities="${applicationId}.TTMultiProvider"

    android:exported="false" />

SDK中使用的so文件支持五种架构:x86,x86_64,armeabi,armeabi-v7a,arm64-v8a 如果您应用中支持的架构超出这 五种,请在build.gradle中使用abiFilters选择支持的架构。

android {

    defaultConfig {

            ndk{    

                // 设置支持的 SO 库构架,注意这里要根据你的实际情况来设置 

                abiFilters'armeabi-v7a','arm64-v8a','x86','x86_64','armeabi'

                    }

            }

    }

5.初始化SDK(这是一个类)

/**

* 可以用一个单例来保存TTAdManager实例,在需要初始化sdk的时候调用

*/

public class TTAdManagerHolder {

    private static boolean sInit;

    public static TTAdManager get() {

        if (!sInit) {

            throw new RuntimeException("TTAdSdk is not init, please check.");

        }

        return TTAdSdk.getAdManager();

    }

    public static void init(Context context) {

        doInit(context);

    }

    //step1:接入网盟广告sdk的初始化操作,详情见接入文档和穿山甲平台说明

    private static void doInit(Context context) {

        if (!sInit) {

            TTAdSdk.init(context, buildConfig(context));

            sInit = true;

        }

    }

// 1. 初始化SDK时需要包含APPID,播放器,appname,通知栏提示,debug状态,网络状态等信息

// 2. 如果是多进程的话,需要在每个请求广告的子进程都进行初始化设置

    private static TTAdConfig buildConfig(Context context) {

        return new TTAdConfig.Builder()

                .appId("5001121")

                .useTextureView(true) //使用TextureView控件播放视频,默认为SurfaceView,当有SurfaceView冲突的场景,可以使用TextureView

                .appName("应用id")

                .titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)

                .allowShowNotify(true) //是否允许sdk展示通知栏提示

                .allowShowPageWhenScreenLock(true) //是否在锁屏场景支持展示广告落地页

                .debug(true) //测试阶段打开,可以通过日志排查问题,上线时去除该调用

                .directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI, TTAdConstant.NETWORK_STATE_3G) //允许直接下载的网络状态集合

                .supportMultiProcess(false)//是否支持多进程

                //.httpStack(new MyOkStack3())//自定义网络库,demo中给出了okhttp3版本的样例,其余请自行开发或者咨询工作人员。

                .build();

    }

}

在Application中调用

public class MyApp extends Application {

    @Override

    public void onCreate() {

        super.onCreate();

        // 穿山甲SDK初始化

        // 强烈建议在应用对应的Application#onCreate()方法中调用,避免出现content为null的异常

        TTAdManagerHolder.init(this);

        //如果明确某个进程不会使用到广告SDK,可以只针对特定进程初始化广告SDK的content

        //if (PROCESS_NAME_XXXX.equals(processName)) {

        //  TTAdManagerHolder.init(this)

        //}

    }

}

6.展示广告(激励视频TTRewardVideoAd)

TTAdManager ttAdManager = TTAdManagerHolder.get();

TTAdNative mTTAdNative = ttAdManager.createAdNative(getApplicationContext());

AdSlot adSlot =new AdSlot.Builder()

.setCodeId("广告位id")

.setSupportDeepLink(true)

.setAdCount(2)

//个性化模板广告需要设置期望个性化模板广告的大小,单位dp,激励视频场景,只要设置的值大于0即可。仅模板广告需要设置此参数

        .setExpressViewAcceptedSize(500, 500)

.setImageAcceptedSize(1080, 1920)

.setRewardName("金币")//奖励的名称

        .setRewardAmount(3)//奖励的数量

        //必传参数,表来标识应用侧唯一用户;若非服务器回调模式或不需sdk透传

        //可设置为空字符串

        .setUserID("user123")

.setMediaExtra("media_extra")//用户透传的信息,可不传

        .build();

7.视频回调

mTTAdNative.loadRewardVideoAd(adSlot, new TTAdNative.RewardVideoAdListener() {

@Override

          public void onError(int i, String s) {

//开屏广告请求失败

          }

@Override

          public void onRewardVideoAdLoad(TTRewardVideoAd ttRewardVideoAd) {

ttRewardVideoAd.setRewardAdInteractionListener(new TTRewardVideoAd.RewardAdInteractionListener() {

@Override

                  public void onAdShow() {

showToast("播放完视屏即可签到领奖");

                  }

@Override

                  public void onAdVideoBarClick() {

showToast("开始下载");

                  }

@Override

                  public void onAdClose() {

showToast("关闭广告");

                  }

@Override

                  public void onVideoComplete() {

showToast("视频完成");

                  }

@Override

                  public void onVideoError() {

//                      showToast("视频错误");

                  }

@Override

                  public void onRewardVerify(boolean b, int i, String s) {

//                      showToast("视频异常");

                  }

@Override

                  public void onSkippedVideo() {

showToast("跳过视频");

                  }

});

              ttRewardVideoAd.showRewardVideoAd(FoundSignActivity.this);

          }

@Override

          public void onRewardVideoCached() {

}

});



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352