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会获取下述权限并应用于广告投放。

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

适配 Android7.0 及以上

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

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

android:name="com.bytedance.sdk.openadsdk.TTFileProvider"

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

android:exported="false"

android:grantUriPermissions="true">

    android:name="android.support.FILE_PROVIDER_PATHS"

    android:resource="@xml/file_paths" />


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

   

   

   

   

   

   


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

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

    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() {

}

});



你可能感兴趣的:(Android端集成穿山甲SDK)