菜单

Android SDK接入常见问题

本文包含androi、Unity、Flutter等相关疑问解答,在本文中的常见问题无法查找到的,还可以在常见问题排查查找。

常见问题

1广告展示无展示成功回调(关键字:无回调)

是什么广告平台,广告平台SDK版本是多少,是否有自己初始化广告平台SDK

demo是否有回调,替换参数有没有触发回调

请使用调试模式过滤anythink打印完整日志查看有没有报错信息

排查是否真实展示成功且屏幕显示区域不会太小,其次是否全自动模式和手动模式方法弄混

没触发就反馈到相应广告平台咨询

2开屏广告点击跳过按钮无反应(关键字:无反应)

是什么广告平台,广告平台SDK版本是多少

demo是否有反应,替换参数有没有反应

检查布局是否有遮挡

打印日志看dismiss回调有没有触发,如果有触发排查下代码处理逻辑

没触发就可以反馈到相应广告平台咨询

3激励视频关闭按钮无反应(关键字:无反应)

是什么广告平台,广告平台SDK版本是多少

demo是否有反应,替换参数有没有反应

检查布局是否有遮挡

是否倒计时结束才可以点击关闭,属于正常情况,这个是由广告平台控制的

没触发就可以反馈到相应广告平台咨询

4开屏广告超时(关键字:广告超时)

1.将其他广告形式的预加载逻辑以及其他消耗网络资源的请求放到开屏广告展示之后,以减少开屏加载超时的情况

2.后台配置兜底开屏广告源减少加载超时情况(兜底广告会在广告加载发起1秒后发起广告加载,当到达timeout时如果兜底广告已经加载成功了,就会触发onAdLoaded。建议配置一个高填充的广告源作为兜底广告)

3.集成时预置兜底开屏参数,提升首次安装开屏加载效率。使用方法参考 https://docs.takuad.com/#/zh-cn/android/android_doc/android_sdk_splash_access?id=splash_timeout 注意,这只对应用安装后首次启动有效果

4.若需在热启动时展示开屏广告,建议在应用退到后台时,调用ATSplashAd.isAdReady()判断有无开屏广告缓存,若无则发起load进行预加载。或者在onAdDismiss时调用load进行预加载

5. 另外还有就是通过调整后台瀑布流数量,并行请求数量进行优化。这个可能需要进行测试才知道怎样配置会有正向效果。

5视频是否能静音,是否能自动播放,是否能不显示关闭按钮等设置(关键字:广告设置)

请查看聚合管理广告源配置是否有相关设置,有就可配置没有不可配置,可以咨询对应广告平台

6Taku有没有提前关闭广告的接口方法呢(关键字:广告关闭方法)

只能是用户自己点击关闭或者使用原生自渲染广告可以设置关闭点击事件的

7APP存在未告知用户权限使用目的的情况下提前申请位置权限的情况(关键字:权限)

可以在Manifest上移除掉ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION。这样广告发起加载时就不会申请定位权限了。这可能会对收益有影响

8APP个性化推荐设置不符合相关规定(关键字:个性化)

可以使用开关去开启或者关闭个性化推荐广告功能,参考一下链接

https://docs.takuad.com/#/zh-cn/android/android_doc/privacy_policy_cn

9Taku可以设置谷歌自适应横幅广告吗?(关键字:自适应)

可以,localExtras.put(AdmobATConst.ADAPTIVE_ORIENTATION,AdmobATConst.ORIENTATION_CURRENT);

localExtras.put(AdmobATConst.ADAPTIVE_TYPE,AdmobATConst.ADAPTIVE_ANCHORED);

localExtras.put(AdmobATConst.ADAPTIVE_WIDTH,width);宽度传入你期望的宽度 单位是px

10超时回调onAdLoadTimeout和onAdLoaded(boolean isTimeout)触发逻辑(关键字:超时)

1广告加载未超时回调onAdLoaded(false)

2广告加载超时后回调onAdLoadTimeout,开屏广告仍在加载,如果加载成功会触发onAdLoaded(true)

11我们在平台配置了max sdk key;但代码显示一直没有拉到,请问会是什么原因呢?(关键字:max)

创建自定义平台账号并且向运营申请关联max后,没有重新编辑平台账号(输入sdk_key)就创建了广告源 ,应该先联系运营关联,然后再配置广告源

12华为模板广告提示selfRenderView 不能为空,华为的广告点击没有回调onRewardedVideoAdPlayClicked(关键字:华为广告)

华为没有原生模板广告的,华为本身是没有提供这个点击事件的回调

13自渲染信息流,优量汇自己加了个广告图标上去,是否有方法去掉(关键字:广告图标)

在调用prepare api前,调用ATNativePrepareInfo.setChoiceViewLayoutParams 传入一个FrameLayout.LayoutParams。你可以传入一个负值的marginLeft,让这个choiceicon移除可视区域外

14统计到的广告加载失败原因,{"code": "", "message": "Request Token or Custom bid info Timeout."}(关键字:广告加载失败)

后台查询数据对比,如果总请求占比不高,那是正常的,和设备网络都有关系,如果和总请求次数接近检查下高级设置的最长竞价超时是否设置过小

15自定义广告平台接口接入的日志报错This network don't support head bidding in current Taku's version

(关键字:自定义广告)

确认下自定义Adapter时有无重写这个方法startBiddingRequest,并且return true

16TakuSDK是否初始化成功的接口有暴露么,聚合的各个广告SDK的初始化是怎么加载的(关键字:初始化)

SDK初始化成功接口没有提供,初始化只要调用就会成功的,只需要注意先初始化后再加载广告即可,我们是在第一次广告加载时才去初始化广告平台的SDK

17SDK对缓存广告的处理,如果APP进程被杀了,SDK会把已经缓存但还未展示的广告清空吗(关键字:缓存)

会的,广告位的广告源配置是磁盘存储,广告缓存是在内存,杀掉程序就没有了

18onAdLoaded 和onExposure的 networkFirmId返回的不一样,是aTSplashAd调用获取atTopAdInfo取的

(关键字:atTopAdInfo)

展示之后再获取atTopAdInfo拿到的是缓存里的networkFirmId所以前后不一致,当前networkFirmId可以直接通过展示回调里的AdInfo去获取

19每次从后台返回前台展示开屏广告,同样都是腾讯的广告源,有时候会出现这个4004,广告容器不可见报错,有时候没有,检查展示广告的容器是一直可见的(关键字:4004容器不可见)

建议showAd方法,麻烦用主线程的Handler,postDelay延迟 10ms后再调用showAd方法试试看,另外加上container.removeAllViews();展示前调用下

20自定义实现banner广告,我已经调用了自定义回调的onBannerAdShow,但是还是收不到onBannerShow或者onBannerAutoRefreshed,这个是什么原因,这个广告平台banner没有展示回调,我是在加载成功后,回调了展示(关键字:自定义广告)

删掉mLoadListener.onAdCacheLoaded();重写下这个方法

@Override

public boolean supportImpressionCallback() {

   return false;

}

21当缓存中有两个的广告的情况下,会播放哪个?(关键字:缓存)

优先展示最高价的,同价格的广告源的后台可以看到权重,有百分比,权重高展示概率大

22network SDK无法获得填充(关键字:无填充)

1开发者查看加载广告失败的完整log信息;

2根据log信息,到错误码表进行排查,地址:https://docs.takuad.com/#/zh-cn/android/android_doc/android_errorcode

3在后台-高级功能-日志分析查看有无报错信息

23network SDK提示appid与placement id错误(关键字:appid,placement id)

1. Taku配置的广告平台appid和其他地方使用的广告平台appid确保一致;

2. 检查Taku配置的广告平台appid是正确的

3. 尽量避免不同聚合在同个时间多次调用初始化

24Taku SDK提示appid与placement id错误(关键字:appid,placement id)

1请检查SDK初始化时传入的appid是否跟Taku后台生成的一致

2请检查加载广告时传入的placement id是否跟Taku后台生成的一致

3请检查SDK初始化的appid和placementID是不是相匹配

25加载成功返回几个广告源,最终广告是用的哪个广告源展示的呢(关键字:广告展示)

getATTopAdInfo可以在加载完成时通过这个方法获取最高价的广告源,最终是展示最高价的广告

26问这一下mintegral的setCoppa这个方法需要我们自己去调用吗?(关键字:setCoppa)

需要taku版本在6.1.70或以上且应用配置中选择遵守美国coppa为是,另外在初始化的自定义方法initCustomMap中传入"age"为13

27通管局平台检测APP运行时,未见使用权限对应的相关产品或服务时,提前向用户弹窗申请开启存储、设备信息等权限。(关键字:权限)

你可以在初始化之前增加一些合理场景,例如加上弹窗描述下我们会申请读取权限之类,就是申请权限之前再弹个框告诉他一下我们为啥要这个权限

28我们这边使用了taku的banner,接的优量汇。现在发现一个问题,就是banner关闭,会立马刷新出新的banner。这个关闭后,再次展示,这个我们能否自行控制呢?(关键字:banner刷新)

我们是默认点击关闭会调用刷新,如果不想刷新你可以在代码onBannerclose方法中移除广告,手动调用代码将ATBannerView从父布局中移除

29banner广告的自动刷新只能在后台设置吗?代码里面能控制吗?(关键字:banner刷新)

是的 ,代码中没有配置,统一在后台控制哈

30有广告展示,场景ID的统计都统计到默认那里了,没有统计到具体的场景ID下面(关键字:场景)

广告场景展示统计需要在show方法中传入场景id,entryAdScenario表示进入场景统计

31max集成步骤的sdk key怎么填写?(关键字:max)

这个在后台广告平台配置那里原本是传入json,让运营先关联之后会改变格式,先让我们运营关联再去填写这个配置

32admob激励视频尝试点击广告,但是没有触发回调日志(关键字:无回调)

admob点击广告本身是没有点击事件响应的,需要点击安装按钮才会触发点击回调

33获取快手自渲染信息流广告,返回素材的广告封面 mainImageUrl 为空(关键字:自渲染)

优先展示mediaView,mediaView为空时才用mainImageUrl展示

34发现部分服务端激励回调中user_id字段返回是空(关键字:激励回调)

检查下setLocalExtra方法user_id有没有传值,服务端收到后才会透传的

35服务端激励回调没收到(关键字:激励回调)

首先定位有没有触发onReward()回调,没有回调看广告是否正常展示可咨询对应广告平台

其次检查url格式是否正常参考服务端激励文档https://docs.takuad.com/#/zh-cn/android/NetworkAccess/rewardedvideo_s2s_doc_cn,是否刚刚配置后台配置需要五分钟才生效,通过网页请求自己先验证下服务端回调url是否正常,有没有过滤校验逻辑

最后是否在广告平台和taku都有配置,例如如果在配置穿山甲平台上有配置,穿山甲服务端会向开发者服务端发个验证申请需要返回true才能接受回调,建议只需要在一边配置即可

仍然无回调请联系taku技术支持

36如何获取广告缓存(关键字:缓存)

在广告加载成功后ATSplashAd.checkAdStatus().getATTopAdInfo()获取当前广告最高价缓存对象,checkvalidcaches是获取所有缓存list的,要做下判空处理,如果没有缓存的情况下,就会返回空

37在接入taku的时候,发现引入yandex的sdk后,application的onCreate会走多次,是不同的process id,这是什么情况?(关键字:process)

排查了是Yandex中有一个provider使用process=":Metrica"。如果为了避免Application#onCreate 方法中的逻辑调用两次,可以在Application#onCreate 中先判断是否是主进程再执行自己的逻辑,具体判断是否是主进程判断实例代码:

public boolean isMainProcess(Context context) {

   try {

       if (null != context) {

           return context.getPackageName().equals(getProcessName(context));

       }

   } catch (Exception e) {

       return false;

   }

   return true;

}


public String getProcessName(Context cxt) {

   int pid = android.os.Process.myPid();

   ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE);

   List runningApps = am.getRunningAppProcesses();

   if (runningApps == null) {

       return null;

   }

   for (ActivityManager.RunningAppProcessInfo procInfo : runningApps) {

       if (procInfo.pid == pid) {

           return procInfo.processName;

       }

   }

   return null;

}

38当前在某个自定义规则下的流量分组下,怎么切回没有自定义规则的默认分组下(关键字:流量分组)

这种切换的情况就传空map处理

39广告填充后还未展示之前可以拿到ecpm吗(关键字:ecpm))

可以,填充后就可以通过checkValidAdCaches缓存信息获取ecpm

40admob写进app的那个appid,可以做到动态下发调整吗?(关键字:admob)

admob的appid是不支持通过api去动态配置的,只能在manifest里面声明

41只要开启debug模式,java.Tang.UnsupportedOperationException就会一直报这个闪退(关键字:调试)

是否有提前初始化其他平台,去掉之后再调试

42mtg调试报错Failed resolution of: Lcom/mbridge/msdk/interstitial/c/a;(关键字:调试)

ATSDK.setDebuggerConfig(context, AndroidID, new ATDebuggerConfig.Builder(Mintegral_NETWORK) .setInterstitial(Mintegral_INTERSTITIAL_VIDEO).build());mtg的调试模式只支持视频

43插屏广告支持主动关闭吗(关键字:插屏)

没有主动关闭方法,需要手动点击关闭

44麻烦问一下安装时间是怎么取到的(关键字:安装时间)

通过系统Api PackageInfo.firstInstallTime 获取的

45react native的文档接入激励视频成功了,然后我们想使用全自动加载模式(关键字:加载模式)

RN不支持全自动模式的

46聚合管理这个汇总的请求,为啥不等于下面广告源请求的次数总和呀?(关键字:请求)

最上面的是流量请求,一次流量请求有可能包括多次广告源请求的。比如一次流量请求,可能会从高往低请求多个广告源

47安卓端的原生自渲染广告,发现穿山甲有一层关闭按钮,自渲染我们统一有自己的关闭按钮,请问如何去掉穿山甲的哇?(关键字:关闭按钮)

setCloseView和setDislikeCallbackListener将这两个去掉就不会调用穿山甲的弹窗了,自己给关闭按钮添加点击事件就好了

unity问题

1因unityads导致下架或提审被拒(关键字:下架被拒)

国际版的Unity出的包不带UnityAds Splash的代码,国内的带(UnityAds广告源的SDK版本是没问题的,只是有的游戏导出的APK给带进去了一部分低版本UnityAds Splash的代码),重新用国际版出包提审

2编译时报错(关键字:编译报错)

从Unity 2021.2开始,编译时报错: Exception:OBSOLETE - Providing Androidresources in Assets/Plugins/Android/reswas removed, please move yourresources to an AAR or an AndroidLibrary.

参考文档说明:https://docs.takuad.com/#/zh-cn/unity/unity_doc/unity_access_android_init_doc?id=_211-unity-20212%e5%8f%8a%e4%bb%a5%e4%b8%8a%e7%89%88%e6%9c%ac%ef%bc%88%e5%85%b6%e4%bb%96%e7%89%88%e6%9c%ac%e8%a7%81%e4%b8%8b%e6%96%b9%e8%af%b4%e6%98%8e%ef%bc%89


文章图片


3unity打包时间非常长(关键字:打包)

1、 检查各个gradle文件中的仓库声明顺序(baseProjectTemplate.gradle、LauncherTemplate.gradle、MainTemplate.gradle),确保mavenCentral()在最前面,jcenter和google放到后面,jcenter要放到最后

2、 检查是否翻墙,因为SDK的gradle依赖可能需要翻墙才能比较快的下载到本地

4unity如何调试广告(关键字:调试广告)

unity不支持调试模式,建议使用demo id去测试

flutter问题

1报错找不到SDK(关键字:找不到)

method call error: io.flutter.plugin.common.Methodall@b4bfee0, Failed resolution of: sLcom/anythink/banner/api/ATBannerView:

一般是引入libs路径错误如下:



正确路径为api fileTree(dir: '../../plugins/anythink_sdk/android/libs', include: ['*.aar', '*.jar'])

2NativeRender的报错(关键字:NativeRender)

NativeRender已经废弃,请下载最新flutter版本



3flutter高版本flutter.jar路径不对(关键字:路径)

1 local.properties中flutter.sdk改成自己路径

2新建libs compile 添加flutter.jar

3 依赖libs compile/flutter.jar (compileOnly fileTree(dir: libs compile , include: ['*.jar'])

compileOnly fileTree(dir: libs  , include: ['*.aar','*.jar'])





4这边在多个地方调用PlatformBannerWidget的话会报错 PlatformException(error, java.lang.IllegalStateException: The Android view returned from PlatformView#getView() was already added to a parent view.(关键字:banner)

ATBannerManager.removeBannerAd() 里面传广告位id,不展示banner时调用下这个方法

5ERROR:/Users//Desktop//build/anythink.sdk/intemediates/merged.res/release/values/values.xm:585: AAPT: rror: resource android:atr/Star not found(关键字:resource)

一般是admob和其他平台一起集成时会报这个错,这时需要强制指定core的版本






最近修改: 2026-01-06Powered by