Jetpack Compose 下 AdMob 横幅广告(AdView)无展示内容问题咨询
AdMob横幅广告无展示问题排查(Jetpack Compose场景)
1. 必须配置的基础项遗漏
- 清单文件未添加必要权限,缺少权限会完全无法拉取广告:
<!-- 必须配置 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- 未初始化AdMob SDK:必须在Application的
onCreate生命周期中提前初始化,这个步骤不能省略:
MobileAds.initialize(this)
2. 现有代码的问题
- 布局尺寸约束缺失:当前代码只给AdView设置了宽度约束,未设置高度,会导致父布局把广告区域高度挤压为0,需要补充高度适配逻辑。
- 重复加载广告逻辑冲突:
update回调会在每次Composable重组时触发广告加载,反复刷新会导致广告根本无法正常渲染,直接删除update块即可。
3. 其他校验项
- 当前用的是官方测试ID是合规的,如果后续换成正式ID,需要确认AdMob后台已经绑定你应用的包名和签名信息,否则会返回无填充。
- 排查具体错误可以开启AdMob调试日志,过滤
Ads标签就能看到具体报错原因,比如配置错误、无广告填充等。
修正后的代码参考
@Composable fun AdvertView(modifier: Modifier = Modifier) { AndroidView( modifier = modifier .fillMaxWidth() .wrapContentHeight(), // 补全高度适配 factory = { context -> AdView(context).apply { adSize = AdSize.BANNER adUnitId = "ca-app-pub-3940256099942544/6300978111" loadAd(AdRequest.Builder().build()) } } // 移除多余的update加载逻辑 ) }
内容的提问来源于stack exchange,提问作者Valynk
相关产品推荐
相关产品推荐

