AdMob集成疑问:我的实现环节遗漏了哪些内容?
AdMob横幅广告无法加载排查方案
问题场景
作为Android开发新手,已查阅文档并观看横幅广告实现的相关视频,但仍未解决问题:在activity_main.xml预览中能看到“Ads By Google”占位横幅,但应用启动后无法看到任何广告。
用户当前实现的代码片段如下:
build.gradle.kts(依赖项)
implementation(libs.play.services.ads)
MainActivity.kt(onCreate方法)
MobileAds.initialize(this@MainActivity) {} adView = findViewById<View>(R.id.adView) as AdView val adRequest = AdRequest.Builder().build() adView.loadAd(adRequest)
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> ... <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="(Insert App ID Here)"/>
activity_main.xml
<com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="BANNER" ads:adUnitId="(Insert Unit Id Here)"/>
核心排查与修复步骤
替换占位ID为真实/测试ID
你当前的APPLICATION_ID和adUnitId仍为占位符,必须替换:- 测试阶段优先使用官方测试ID(避免真实ID触发限制):
- 测试APP ID:
ca-app-pub-3940256099942544~3347511713 - 测试横幅单元ID:
ca-app-pub-3940256099942544/6300978111
- 测试APP ID:
- 正式环境需使用AdMob后台创建的对应应用和广告单元ID,确保完全匹配。
- 测试阶段优先使用官方测试ID(避免真实ID触发限制):
添加初始化与加载状态监听
初始化时添加回调确认状态,同时监听广告加载结果,直接定位错误:// 初始化回调 MobileAds.initialize(this) { status -> status.adapterStatusMap.forEach { (adapter, adapterStatus) -> Log.d("AdMobInit", "${adapter.simpleName}: ${adapterStatus.initializationState}") } } // 广告加载监听 adView.adListener = object : AdListener() { override fun onAdLoaded() { Log.d("AdMob", "广告加载成功") } override fun onAdFailedToLoad(error: LoadAdError) { Log.e("AdMobError", "加载失败: ${error.message}, 错误码: ${error.code}") } }根据错误码可快速定位问题:比如错误码3代表无填充,错误码0代表网络异常。
优化依赖与网络配置
- 确认
libs.play.services.ads对应的版本为最新稳定版,避免兼容性问题; - 若应用设置了
android:usesCleartextTraffic="false",需在AndroidManifest.xml中添加网络安全配置,允许AdMob域名的明文流量:<application ...> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">googleads.g.doubleclick.net</domain> <domain includeSubdomains="true">admob.google.com</domain> </domain-config> </network-security-config> </application>
- 确认
调整布局参数
将AdView的宽度设为match_parent,高度设为对应adSize的固定值(如BANNER为50dp),避免布局显示异常:<com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@+id/adView" android:layout_width="match_parent" android:layout_height="50dp" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="BANNER" ads:adUnitId="你的测试/真实单元ID"/>
内容的提问来源于stack exchange,提问作者Harry Jin
相关产品推荐
相关产品推荐

