如何在.NET MAUI中接入展示Google Ads/AdMob广告
.NET MAUI 接入AdMob的实现指引
首先明确结论:目前已经有非常多开发者在.NET MAUI生产应用中成功跑通了AdMob的横幅、插屏、激励视频等全类型广告接入,你之前判断的「Xamarin.Forms开发逻辑大部分可兼容到MAUI」是成立的,只是要注意MAUI和Xamarin.Forms在绑定库版本、控件映射机制、平台配置路径上的少量差异,不要直接硬套多年未更新的老旧XF第三方插件即可。
你可以按照下面的方向自行实现,整体代码量很小:
- 依赖项选择:不要使用停止维护的Xamarin时期旧版AdMob绑定包,直接选用适配.NET MAUI的最新版Google Mobile Ads平台绑定,安卓、iOS端的绑定包均和谷歌官方AdMob SDK版本同步,不存在版本兼容问题。
- 跨平台控件实现:逻辑和Xamarin.Forms时期几乎一致:
- 先在跨平台共享项目中定义自定义广告控件,继承自基础View,暴露广告单元ID、广告尺寸、广告加载完成/失败的事件等可绑定属性
- 可以选择沿用Xamarin.Forms时期的自定义渲染器方案,或者用MAUI更轻量的Handler机制,分别在安卓、iOS平台项目中,把你定义的跨平台广告控件映射到对应平台原生的AdMob广告视图对象上
- 在Handler/渲染器中实现广告的加载、事件回调上报、控件销毁时的资源释放逻辑即可
- 平台配置项:配置逻辑和Xamarin.Forms时期基本一致,只需要注意对应MAUI的平台文件路径:
- 安卓端在平台项目的
AndroidManifest.xml中添加AdMob App ID对应的元数据、所需网络权限、广告页Activity声明 - iOS端在平台项目的
Info.plist中添加GADApplicationIdentifier配置项,iOS14+按要求添加ATT权限申请的相关逻辑,在应用启动后合适的时机触发权限弹窗
- 安卓端在平台项目的
- 测试注意事项:开发调试阶段全程使用谷歌官方提供的测试广告单元ID,不要直接使用正式生产ID,避免触发AdMob账号的违规检测,测试流程和Xamarin.Forms接入AdMob时完全一致。
避坑提示:不要直接照搬3年以上未更新的Xamarin.Forms第三方AdMob插件,这类插件大多绑定的是已经过时的AdMob SDK版本,在安卓13+、iOS16+以上的系统版本中大概率会出现广告加载失败、应用崩溃、合规检测不通过的问题,自行基于官方绑定实现的方案可控性更高,后续SDK升级也更灵活。
内容的提问来源于stack exchange,提问作者Tanaka Mawere
相关产品推荐
相关产品推荐

