AdMob集成后广告无法显示:测试ID可用自定义ID失效,代码是否正确?
你的代码基本正确,但需要排查广告不显示的核心原因
先明确:你的ID配置逻辑是没问题的——
MobileAds.initialize传入的是应用ID(格式为ca-app-pub-xxx~xxx),完全符合AdMob初始化要求- XML中AdView的
adUnitId是广告单元ID(格式为ca-app-pub-xxx/xxx),这也是正确的配置方式
那为什么测试ID能正常加载,自己的ID不行?大概率是以下几个常见原因:
- 广告单元/应用未通过审核:新创建的AdMob应用和广告单元都需要经过谷歌的审核流程,通常耗时几小时到1-2天。审核期间真实广告不会展示,但测试ID不受此限制。你可以登录AdMob后台查看审核状态。
- 无可用广告填充:如果你的应用刚上线,或者当前设备所在地区的广告库存不足,AdMob可能无法返回广告(对应错误码通常是
ERROR_CODE_NO_FILL)。这种情况可以尝试切换海外网络环境测试,或者等待应用积累一定用户请求量后再观察。 - AdMob政策限制:检查AdMob后台的「政策中心」,确认你的应用有没有违反广告政策导致广告被限制展示。如果有违规提示,需要按要求整改后才能恢复。
- 请求频率限流:短时间内频繁发送广告请求,AdMob可能会暂时限制你的请求,这种情况一般过一段时间会自动恢复。
建议添加日志精准排查
为了快速定位问题,你可以给AdView添加监听,打印广告加载失败的详细信息:
adView.setAdListener(new AdListener() { @Override public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) { super.onAdFailedToLoad(loadAdError); Log.e("AdMobDebug", "广告加载失败: " + loadAdError.getMessage() + " 错误码: " + loadAdError.getCode()); } });
根据错误码就能快速对应问题:比如3代表无广告填充,4代表应用未通过审核,0代表内部服务错误等。
内容的提问来源于stack exchange,提问作者user9114450
相关产品推荐
相关产品推荐

