首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

穿山甲广告sdk手动初始化

1.序言

最近广告小游戏对隐私协议卡的比较严,taptap官方提出整改建议是,在用户同意隐私协议后在加载穿山甲的广告。研究了一下:

2.大概思路是

修改原本的  UnionApplication.java脚本

//手动加载初始化说明:

//将本脚本文件的内容替换到 UnionApplication.java 里面

//然后将下面的代码 放到你启动广告sdk的方法里面

//

// AndroidJavaObject jo = new AndroidJavaObject("com.bytedance.ad.sdk.mediation.UnionApplication");

// jo.Call("init_ad");

//

package com.bytedance.ad.sdk.mediation;

import android.app.Application;

import android.content.Context;

import android.support.multidex.MultiDex;

import android.widget.Toast;

import com.bytedance.msdk.api.TTAdConfig;

import com.bytedance.msdk.api.TTAdConstant;

import com.bytedance.msdk.api.TTMediationAdSdk;

import com.bytedance.msdk.api.UserInfoForSegment;

import com.unity3d.player.UnityPlayer;

public class UnionApplication  extends Application {

   @Override

   public void onCreate() {

       super.onCreate();

       //TTMediationAdSdk.initialize(this, buildConfig());

  }

   public  String init_ad() {

       TTMediationAdSdk.initialize(UnityPlayer.currentActivity.getApplicationContext(), buildConfig());

       //Toast.makeText(UnityPlayer.currentActivity.getApplicationContext(), "用户同意隐私协议,启动SDK加载", Toast.LENGTH_LONG).show();

       return  "初始化广告";

  }

   private static TTAdConfig buildConfig() {

       UserInfoForSegment userInfo = new UserInfoForSegment();

       userInfo.setUserId("msdk demo");

       userInfo.setGender(UserInfoForSegment.GENDER_MALE);

       userInfo.setChannel("msdk channel");

       userInfo.setSubChannel("msdk sub channel");

       userInfo.setAge(999);

       userInfo.setUserValueGroup("msdk demo user value group");

       return new TTAdConfig.Builder()

              .appId("5172046")

              .appName("外卖人_android")

              .openAdnTest(false)//开启第三方ADN测试时需要设置为true,会每次重新拉去最新配置,release 包情况下必须关闭.默认false

              .isPanglePaid(false)//是否为费用户

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

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

              .setPangleTitleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)

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

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

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

              .needPangleClearTaskReset()//特殊机型过滤,部分机型出现包解析失败问题(大部分是三星)。参数取android.os.Build.MODEL

              .setUserInfoForSegment(userInfo) // 设置流量分组的信息

              .build();

  }

   @Override

   protected void attachBaseContext(Context base) {

       super.attachBaseContext(base);

       MultiDex.install(base);

  }

}

他这个脚本是在 onCreate() 里面直接 在unity的activity创建的时候就加载广告sdk。会导致 用户没有同意隐私协议,广告sdk就已经在开始获取各种信息了,这不符合应用商店的要求。将其改为下面的:

//手动加载初始化说明:

//将本脚本文件的内容替换到 UnionApplication.java 里面

//然后将下面的代码 放到你启动广告sdk的方法里面

//

// AndroidJavaObject jo = new AndroidJavaObject("com.bytedance.ad.sdk.mediation.UnionApplication");

// jo.Call("init_ad");

//

package com.bytedance.ad.sdk.mediation;

import android.app.Application;

import android.content.Context;

import android.support.multidex.MultiDex;

import android.widget.Toast;

import com.bytedance.msdk.api.TTAdConfig;

import com.bytedance.msdk.api.TTAdConstant;

import com.bytedance.msdk.api.TTMediationAdSdk;

import com.bytedance.msdk.api.UserInfoForSegment;

import com.unity3d.player.UnityPlayer;

public class UnionApplication  extends Application {

   @Override

   public void onCreate() {

       super.onCreate();

       //TTMediationAdSdk.initialize(this, buildConfig());

  }

   public  String init_ad() {

       TTMediationAdSdk.initialize(UnityPlayer.currentActivity.getApplicationContext(), buildConfig());

       Toast.makeText(UnityPlayer.currentActivity.getApplicationContext(), "用户同意隐私协议,启动SDK加载", Toast.LENGTH_LONG).show();

       return  "初始化广告";

  }

   private static TTAdConfig buildConfig() {

       UserInfoForSegment userInfo = new UserInfoForSegment();

       userInfo.setUserId("msdk demo");

       userInfo.setGender(UserInfoForSegment.GENDER_MALE);

       userInfo.setChannel("msdk channel");

       userInfo.setSubChannel("msdk sub channel");

       userInfo.setAge(999);

       userInfo.setUserValueGroup("msdk demo user value group");

       return new TTAdConfig.Builder()

              .appId("5172046")

              .appName("外卖人_android")

              .openAdnTest(false)//开启第三方ADN测试时需要设置为true,会每次重新拉去最新配置,release 包情况下必须关闭.默认false

              .isPanglePaid(false)//是否为费用户

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

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

              .setPangleTitleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)

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

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

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

              .needPangleClearTaskReset()//特殊机型过滤,部分机型出现包解析失败问题(大部分是三星)。参数取android.os.Build.MODEL

              .setUserInfoForSegment(userInfo) // 设置流量分组的信息

              .build();

  }

   @Override

   protected void attachBaseContext(Context base) {

       super.attachBaseContext(base);

       MultiDex.install(base);

  }

}

这里需要注意一个地方,就是 TTMediationAdSdk.initialize()的第一个参数,需要用 UnityPlayer.currentActivity.getApplicationContext(),如果还是用this,会出现空异常。

3.如何用unity访问这个代码

如果不理解unity和安卓交互的,可以先去学习下安卓和unity交互的基础.这里改好了,剩下的就是 让unity 能够访问这个 方法了。直接用下面的代码即可,将这个代码 放在 用户同意你的隐私协议后执行,如果你的游戏有开始游戏按钮,推荐是开始游戏 按钮里面 执行这个代码也可以放到 初始化数据的场景 里面的start方法里面去执行

AndroidJavaObject jo = new AndroidJavaObject("com.bytedance.ad.sdk.mediation.UnionApplication");

jo.Call("init_ad");

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230516A01TRJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券