Xamarin.Forms项目中Google AdMob横幅广告无法显示求助
解决Xamarin.Forms集成AdMob横幅广告仅显示占位模板的问题
看起来你在Xamarin.Forms里集成AdMob横幅广告时踩了常见的坑——只显示彩色占位模板,连测试ID都不管用。结合你贴的代码,咱们来一步步排查修复:
1. 替换无效的广告单元ID
你的Android渲染器里写的adView.AdUnitId = "ca-app-p";是完全无效的占位符。哪怕是测试阶段,也得用Google官方提供的测试广告单元ID(自定义ID需要先在AdMob后台创建并通过审核,测试用官方ID更稳妥)。
Android横幅广告的官方测试ID如下,直接替换即可:
adView.AdUnitId = "ca-app-pub-3940256099942544/6300978111";
2. 补全Android项目的权限与配置
打开Android项目的AndroidManifest.xml,必须添加以下必要配置,否则广告无法正常加载:
<!-- 广告需要联网权限 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- AdMob应用ID配置,测试用官方ID,后续替换成你自己的 --> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-3940256099942544~3347511713"/>
3. 添加测试设备(避免触发AdMob限制)
为了防止误触发AdMob的流量限制,建议在广告请求中明确添加你的测试设备和模拟器:
- 运行应用后,在Android Studio的Logcat中搜索
Use AdRequest.Builder.addTestDevice("DEVICE_ID"),找到你的设备ID - 修改请求代码:
var requestbuilder = new AdRequest.Builder() .AddTestDevice("你的测试设备ID") // 替换成你拿到的ID .AddTestDevice(AdRequest.DeviceIdEmulator); // 适配模拟器 adView.LoadAd(requestbuilder.Build());
4. 检查渲染器与控件尺寸匹配
你在XAML里给AdBanner设置了WidthRequest="320" HeightRequest="50",这个尺寸要和你在渲染器中设置的AdSize对应。比如你默认用的AdSize.Banner正好是320x50,这个是对的;如果后续切换到LargeBanner(320x100),记得同步调整XAML里的尺寸参数。
另外,确认你的Android项目已经安装了兼容版本的Xamarin.GooglePlayServices.Ads NuGet包,版本不匹配也会导致广告加载失败。
5. 自定义ID的额外检查(若后续使用自己的ID)
如果之后要切换到自己的广告单元ID,需要确保:
- 你的AdMob账号已通过审核
- 广告单元已创建,且关联的应用ID与项目包名完全一致
- 项目的包名和AdMob后台配置的应用包名完全匹配
修改完以上配置后,清理项目、重新生成并运行,应该就能正常加载测试广告了。
内容的提问来源于stack exchange,提问作者Burak Çetin
相关产品推荐
相关产品推荐

