本文包含androi、Unity、Flutter等相关疑问解答,在本文中的常见问题无法查找到的,还可以在常见问题排查查找。
是什么广告平台,广告平台SDK版本是多少,是否有自己初始化广告平台SDK
demo是否有回调,替换参数有没有触发回调
请使用调试模式过滤anythink打印完整日志查看有没有报错信息
排查是否真实展示成功且屏幕显示区域不会太小,其次是否全自动模式和手动模式方法弄混
没触发就反馈到相应广告平台咨询
是什么广告平台,广告平台SDK版本是多少
demo是否有反应,替换参数有没有反应
检查布局是否有遮挡
打印日志看dismiss回调有没有触发,如果有触发排查下代码处理逻辑
没触发就可以反馈到相应广告平台咨询
是什么广告平台,广告平台SDK版本是多少
demo是否有反应,替换参数有没有反应
检查布局是否有遮挡
是否倒计时结束才可以点击关闭,属于正常情况,这个是由广告平台控制的
没触发就可以反馈到相应广告平台咨询
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. 另外还有就是通过调整后台瀑布流数量,并行请求数量进行优化。这个可能需要进行测试才知道怎样配置会有正向效果。
请查看聚合管理广告源配置是否有相关设置,有就可配置没有不可配置,可以咨询对应广告平台
只能是用户自己点击关闭或者使用原生自渲染广告可以设置关闭点击事件的
可以在Manifest上移除掉ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION。这样广告发起加载时就不会申请定位权限了。这可能会对收益有影响
可以使用开关去开启或者关闭个性化推荐广告功能,参考一下链接
https://docs.takuad.com/#/zh-cn/android/android_doc/privacy_policy_cn
可以,localExtras.put(AdmobATConst.ADAPTIVE_ORIENTATION,AdmobATConst.ORIENTATION_CURRENT);
localExtras.put(AdmobATConst.ADAPTIVE_TYPE,AdmobATConst.ADAPTIVE_ANCHORED);
localExtras.put(AdmobATConst.ADAPTIVE_WIDTH,width);宽度传入你期望的宽度 单位是px
1广告加载未超时回调onAdLoaded(false)
2广告加载超时后回调onAdLoadTimeout,开屏广告仍在加载,如果加载成功会触发onAdLoaded(true)
创建自定义平台账号并且向运营申请关联max后,没有重新编辑平台账号(输入sdk_key)就创建了广告源 ,应该先联系运营关联,然后再配置广告源
华为没有原生模板广告的,华为本身是没有提供这个点击事件的回调
在调用prepare api前,调用ATNativePrepareInfo.setChoiceViewLayoutParams 传入一个FrameLayout.LayoutParams。你可以传入一个负值的marginLeft,让这个choiceicon移除可视区域外
后台查询数据对比,如果总请求占比不高,那是正常的,和设备网络都有关系,如果和总请求次数接近检查下高级设置的最长竞价超时是否设置过小
确认下自定义Adapter时有无重写这个方法startBiddingRequest,并且return true
SDK初始化成功接口没有提供,初始化只要调用就会成功的,只需要注意先初始化后再加载广告即可,我们是在第一次广告加载时才去初始化广告平台的SDK
会的,广告位的广告源配置是磁盘存储,广告缓存是在内存,杀掉程序就没有了
展示之后再获取atTopAdInfo拿到的是缓存里的networkFirmId所以前后不一致,当前networkFirmId可以直接通过展示回调里的AdInfo去获取
建议showAd方法,麻烦用主线程的Handler,postDelay延迟 10ms后再调用showAd方法试试看,另外加上container.removeAllViews();展示前调用下
删掉mLoadListener.onAdCacheLoaded();重写下这个方法
@Override
public boolean supportImpressionCallback() {
return false;
}
优先展示最高价的,同价格的广告源的后台可以看到权重,有百分比,权重高展示概率大
1开发者查看加载广告失败的完整log信息;
2根据log信息,到错误码表进行排查,地址:https://docs.takuad.com/#/zh-cn/android/android_doc/android_errorcode
3在后台-高级功能-日志分析查看有无报错信息
1. Taku配置的广告平台appid和其他地方使用的广告平台appid确保一致;
2. 检查Taku配置的广告平台appid是正确的
3. 尽量避免不同聚合在同个时间多次调用初始化
1请检查SDK初始化时传入的appid是否跟Taku后台生成的一致
2请检查加载广告时传入的placement id是否跟Taku后台生成的一致
3请检查SDK初始化的appid和placementID是不是相匹配
getATTopAdInfo可以在加载完成时通过这个方法获取最高价的广告源,最终是展示最高价的广告
需要taku版本在6.1.70或以上且应用配置中选择遵守美国coppa为是,另外在初始化的自定义方法initCustomMap中传入"age"为13
你可以在初始化之前增加一些合理场景,例如加上弹窗描述下我们会申请读取权限之类,就是申请权限之前再弹个框告诉他一下我们为啥要这个权限
我们是默认点击关闭会调用刷新,如果不想刷新你可以在代码onBannerclose方法中移除广告,手动调用代码将ATBannerView从父布局中移除
是的 ,代码中没有配置,统一在后台控制哈
广告场景展示统计需要在show方法中传入场景id,entryAdScenario表示进入场景统计
这个在后台广告平台配置那里原本是传入json,让运营先关联之后会改变格式,先让我们运营关联再去填写这个配置
admob点击广告本身是没有点击事件响应的,需要点击安装按钮才会触发点击回调
优先展示mediaView,mediaView为空时才用mainImageUrl展示
检查下setLocalExtra方法user_id有没有传值,服务端收到后才会透传的
首先定位有没有触发onReward()回调,没有回调看广告是否正常展示可咨询对应广告平台
其次检查url格式是否正常参考服务端激励文档https://docs.takuad.com/#/zh-cn/android/NetworkAccess/rewardedvideo_s2s_doc_cn,是否刚刚配置后台配置需要五分钟才生效,通过网页请求自己先验证下服务端回调url是否正常,有没有过滤校验逻辑
最后是否在广告平台和taku都有配置,例如如果在配置穿山甲平台上有配置,穿山甲服务端会向开发者服务端发个验证申请需要返回true才能接受回调,建议只需要在一边配置即可
仍然无回调请联系taku技术支持
在广告加载成功后ATSplashAd.checkAdStatus().getATTopAdInfo()获取当前广告最高价缓存对象,checkvalidcaches是获取所有缓存list的,要做下判空处理,如果没有缓存的情况下,就会返回空
排查了是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;
}
这种切换的情况就传空map处理
可以,填充后就可以通过checkValidAdCaches缓存信息获取ecpm
admob的appid是不支持通过api去动态配置的,只能在manifest里面声明
是否有提前初始化其他平台,去掉之后再调试
ATSDK.setDebuggerConfig(context, AndroidID, new ATDebuggerConfig.Builder(Mintegral_NETWORK) .setInterstitial(Mintegral_INTERSTITIAL_VIDEO).build());mtg的调试模式只支持视频
没有主动关闭方法,需要手动点击关闭
通过系统Api PackageInfo.firstInstallTime 获取的
RN不支持全自动模式的
最上面的是流量请求,一次流量请求有可能包括多次广告源请求的。比如一次流量请求,可能会从高往低请求多个广告源
setCloseView和setDislikeCallbackListener将这两个去掉就不会调用穿山甲的弹窗了,自己给关闭按钮添加点击事件就好了
国际版的Unity出的包不带UnityAds Splash的代码,国内的带(UnityAds广告源的SDK版本是没问题的,只是有的游戏导出的APK给带进去了一部分低版本UnityAds Splash的代码),重新用国际版出包提审
从Unity 2021.2开始,编译时报错: Exception:OBSOLETE - Providing Androidresources in Assets/Plugins/Android/reswas removed, please move yourresources to an AAR or an AndroidLibrary.

1、 检查各个gradle文件中的仓库声明顺序(baseProjectTemplate.gradle、LauncherTemplate.gradle、MainTemplate.gradle),确保mavenCentral()在最前面,jcenter和google放到后面,jcenter要放到最后
2、 检查是否翻墙,因为SDK的gradle依赖可能需要翻墙才能比较快的下载到本地
unity不支持调试模式,建议使用demo id去测试
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'])
NativeRender已经废弃,请下载最新flutter版本

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'])


ATBannerManager.removeBannerAd() 里面传广告位id,不展示banner时调用下这个方法
一般是admob和其他平台一起集成时会报这个错,这时需要强制指定core的版本
