Android常见问题
一、广告加载失败
常见问题举例:
加载不到广告或报204/103错误码
204或者103错误码都是竞价失败了,即无填充,建议使用测试广告填充率会比较高
- (1)建议用tradplus的 测试模式
- (2)或者配置 三方的测试id
- (3)如果是海外广告源,设备需要开启海外的vpn,可通过日志过滤“TradPlusLog”关键字查看ip归属,如果切了vpn但还是判断在中国,请确认vpn软件是否需要开启全局模式或者更换vpn软件再次尝试
- (4)部分三方平台应用在审核中、被封禁、广告位刚创建还未生效等均不会填充
- (5)不建议直接请求线上正式广告来本地测试,可能会出现未知报错或者账户封禁风险
response为空:
没有拉取到所使用广告位ID的后台配置,可能的原因是:
- (1)adUnitId填入错误
- (2)广告位ID在Tradplus后台没有配置三方广告源,或者广告源没有添加到中介组
- (3)对海外Bidding广告源,设备需要切海外vpn,可通过日志查看ip归属,如果切了vpn但日志还是显示在国内,请检查vpn是否有全局模式需要开启之类的设置
没引入三方adapter
代码集成上,gradle文件里缺失了对应三方的adapter,请根据sdk下载平台生成的代码引入对应版本的依赖,例如implementation 'com.tradplusad:tradplus-mintegralx_overseas:18.13.4.20.1'
Meta的测试方法:
可使用tradplus测试模式或者自行配置meta测试id,但需注意:
- (1)建议设备切VPN到美国地区
- (2)测试设备上需安装Facebook应用,Facebook需处于登录状态,且账号能正常使用
- (3)配置meta测试id需注意模板为Test Ad Types#YOUR_PLACEMENT_ID,其中YOUR_PLACEMENT_ID为meta后台导出的版位编号,Test Ad Types是:
Test Ad Type | Supported Ad Format |
---|---|
CAROUSEL_IMG_SQUARE_APP_INSTALL | Interstitial, Native |
IMG_16_9_LINK | Banner, Interstitial, Native |
VID_HD_16_9_15S_LINK | Interstitial, Native, Rewarded Video |
Admob测试:
建议在admob后台添加测试设备后直接请求,也可使用tradplus 测试模式,但请注意Admob必须使用测试广告测试,否则会有封号风险。
加载失败原因:
1、集成错误
- 适配文件没有集成
开发者需要根据打包平台确认集成的SDK都正确添加到项目中,找不到三方Adapter会报错adapter not found 或 Couldn't locate or instantiate custom event null
- TP的混淆配置没有添加
根据《SDK配置》文档添加混淆,不添加混淆会报Couldn't locate or instantiate custom event null
- 确认集成广告源是否需要传入Activity
部分三方源需要activity才能请求成功,没有传入Activity会一直失败
- 对象调用错误
确认TP的广告位类型和new TPObject的类型一致,例如不能创建开屏的广告位ID,但是用激励视频API去请求
2、后台配置问题
- 后台没有添加广告源
确认在TradPlus创建的广告位ID下已经添加了三方广告网络,会由于拉取不到配置报no config
- 同一个广告平台配置不同的APPID
- 确认TradPlus后台是否配置的三方广告源有多个APPID
- 后台配置错误即使是不同类型也只能配置同一个APPID
- 例如Mintegral开屏类型的appId、appkey和激励视频类型的appId、appkey不一致,三方平台只支持初始化同一个APPID,多个APPID初始化会导致请求失败
3、请求某个源一直无填充
-
开发者需配合《错误码和错误信息》定位错误问题
-
如果广告一直请求失败,就需要开发者根据三方平台错误码确认集成三方广告加载失败的原因
-
开发者可以通过过滤
TradPlusLog
查看日志信息或设置LoadAdEveryLayerListener
监听oneLayerLoadFailed(TPAdError adError, TPAdInfo adInfo)回调,打印每个广告源加载失败的原因
(1)Meta或者Admob一直没有填充
-
**Meta必须使用测试广告测试,否则会有封号风险。**需要使用三方提供的测试ID去测试,可配合如何使用测试模式来测试
-
Admob必须使用测试广告测试,否则会有封号风险。(见下面截图)TradPlus测试模式测试,TradPlus后台已经将Admob测试广告配置到后台,开发者可以直接使 用。
-
网络不好会偶现插屏视频中间视频播放黑屏,或者原生广告展示无展示事件。
-
请求次数过多,即使是使用测试广告也会无填充。
(2)Bidding源正式广告拉不到配置
报错日志为:
waterfall bean is null
或
Bidding Failed
-
由于TradPlus服务器策略能访问国内ip的网无法拉取到海外Bidding配置的。
-
开发者可以使用TradPlus测试模式进行测试。测试广告请求成功并展示表示内部流程已经跑通,是可以直接上线。
-
如果有需求上线前必须要用正式广告测试,那么IP必须在海外Bidding才能拉取到配置。例如:VPN开启后,不能打开CSDN情况下,才能拉取到,如下图:

(3)TapTap请求没有填充
-
由于Oaid对于TapADN SDK 的广告转化效果尤为重要,开发者请求广告前要传OAID
-
V9.9.10.1+ 支持开发者设置oaid
-
第一次请求广告时设置,以激励视频为例
TPReward mTpReward = new TPReward(activity, "AdUnitId");
Map<String, Object> mLocalExtras = new HashMap<>();
mLocalExtras.put("tap_oaid","手机设备的oaid");
mTpReward.setCustomParams(mLocalExtras);
mTpReward.loadAd();
- V9.9.10.1之前的版本,开发者要重写TapAdCustomController类,传入oaid,请求广告前传给TP,开发者可参考Demo设置
TapTapInitManager.getInstance().setTTCustomController(new TapTapUserDataCustomController());
二、广告加载成功但是展示失败
1、广告加载成功后没有调用showAd
- (1)各类型广告
onAdLoaded(TPAdInfo tpAdInfo, TPBaseAd tpBaseAd)
或oneLayerLoaded(TPAdInfo adInfo)
加载成功监听是否回调 - (2)激励、插屏、开屏
isReady()
为true,后调用showAd()。
2、广告位类型请求的API是否类型匹配
- 例如创建开屏的广告位,但是使用激励视频的API去请求。
- 开发者可以通过打印
onAdVideoError(TPAdInfo tpAdInfo, TPAdError tpAdError)
或onAdShowFailed(TPAdError error, TPAdInfo tpAdInfo)
查看报错原因。
3、激励视频、插屏
-
(1)showAd调用没有传入activity
showAd(Activity activity, String sceneId)
展示广告是否传入Activity,context会导致 部分广告源展示失败。 -
(2)后台配置问题
errorMsg为
frequency limit
,TP广告位是否设置了频次限制。
4、标准原生
-
(1)
showAd(ViewGroup adContainer, int layoutId)
容器是否为空 -
(2)开发者是否修改布局文件中的android🆔 资源ID,会导致自渲染广告的元素无法找到对应id而展示失败
-
(3)后台配置问题
errorMsg为
frequency limit
,TP广告位是否设置了频次限制。
5、开屏
- (1)开发者需确认加载和展示广告是否使用配对的API,正确传入容器,具体请查看《开屏文档》
- (2)后台配置问题
errorMsg为
frequency limit
,TP广告位是否设置了频次限制。
6、Meta的原生横幅
- 容器的宽必须是match_parent,不能是wrap_content,否则会导致展示失败。
7、Bigo的原生横幅
- bigo原生横幅有填充但是没展示,bigo对原生广告的要求是一定 要有大图,即mediaView,否则不算展示。用我们的默认布局模板是有设置mediaView的,如果是自定义样式注意需要加上mediaView。
三、应用ID与广告位ID不匹配问题
一般出现这样提示有以下几种情况:
- 没有调用tradplus的初始化就去load了,这种情况下load广告的时候用的appid是空的
- 调用tradplus的初始化是在load广告后,同上一种情况
- 初始化没有成功就load广告,同上一种情况
- 开启了tradplus的测试模式,测试模式下发的是tradplus默认配置,确实会不一样。这种可以忽略
- 初始化也是提前调的,但是load还提示这个,那么可能确实用的appid和广告位id不是一个app下的,需要去tradplus后台查看应用管理。
四、编译报错
1、拉取TP SDK 或 TP对应的三方Adapter Gradle 失败
-
步骤1:开发者需根据打包平台确认集成的SDK 正确
- (1)是否是5.X更新上来的用户:由于JCenter仓库停止服务,TP和三方平台的仓库均有更新,请老版本升级上来的客户对照打包平台一一修改引用
- (2)版本号是否能一一对应或者是否有字母写错的情况
- (3) Android Studio HTTP Proxy状态正常
- (4) Gradle是否属于“离线模式”—— 'offline mode'情况下构建项目是不会在线拉取第三方依赖包的
-
步骤2:确认Module级和Project级中build.gradle中正确引入了
mavenCentral()
和google()
repositories {
mavenCentral()
google()
jcenter()
...
}
}
-
(1)关于Module和Project,Unity开发者可以参考Google官网的Android Studio模块结构说明。
-
(2)需注意
mavenCentral()
是否写成mavenLocal()
,mavenLocal()
是本地Maven仓库,第一次拉取TP Gradle需从线上拉取 -
(3)各个代码库的列出顺序决定了 Gradle 在这些代码库中搜索各个项目依赖项的顺序。类似如下图情况表明tradplusad跑错了仓库导致拉取失败,此时开发者需要将
mavenCentral()
的位置调整到最高,重新拉取。 -
步骤3:Android Studio Gradle是否是离线状态?
- 不知道怎么判断,初次接触Android的开发者可直接Google或Baidu,“gradle切换online/offline mode模式”。
-
步骤4:电脑是不是开了代理?导致“All packages are not available for download”报错。
- 不知道怎么关闭,初次接触Android的开发者可直接Google或Baidu,“Android Studio如何关闭代理”。
-
步骤5:海外源一些拉取成功,个别拉取失败,大多是网络问题,开VPN切换国家尝试。
2、queries相关
unexpected element <queries> found in <manifest> or Error: Missing package key attribute on element package
-
由于集成的三方广告平台SDK对Gradle plugin的版本有要求,而旧版本的 Android Gradle 插件找不到对应的元素导致报错。
-
开发者需要先确认使用的Gradle版本。然后根据各个Android Gradle 插件版本所需的Gradle 版本。找到可使用的Gradle plugin 版本范围,并根据Android Gradle plugin fixes更新Gradle plugin版本就可以解决报错问题。