You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Xamarin.Forms项目中正确集成Google AdMob横幅广告?

Xamarin.Forms中适配Android API31+的Google AdMob实现指引

针对你遇到的MarcTron.Admob 1.9.0.3版本不支持Android API31+、广告无法显示的问题,以下是具体的解决步骤和实现示例:

一、版本兼容修复

MarcTron.Admob 1.9.0.3确实存在Android API31+的兼容性问题,优先推荐升级到适配Xamarin.Forms 5的最新稳定版本(如2.0.x系列,需确认版本兼容)。若暂时无法升级,可通过手动配置Android项目来兼容API31+。

二、Android端核心配置

1. 修改AndroidManifest.xml

  • 补充基础权限:
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
  • 添加API31+所需权限(用于广告相关包查询):
    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
    
  • 配置AdMob应用ID(替换为你的实际ID):
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy" />
    

2. 调整项目目标SDK

在Android项目属性中,将目标框架设置为Android 12(API31)或更高,同时确保编译版本与目标框架匹配。

三、Xamarin.Forms端实现示例

1. 初始化AdMob

在App.xaml.cs的OnStart方法中完成初始化:

using MarcTron.Admob;

protected override void OnStart()
{
    // 初始化AdMob,传入与清单一致的应用ID
    CrossMTAdmob.Current.Initialize("ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy");
    // 开启测试模式(调试阶段使用,发布前关闭)
    CrossMTAdmob.Current.TestDevices = new List<string> { CrossMTAdmob.Current.DeviceId };
}

2. 横幅广告(XAML)

在页面中添加横幅广告控件:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:mtadmob="clr-namespace:MarcTron.Admob;assembly=MarcTron.Admob"
             x:Class="YourAppNamespace.MainPage">

    <StackLayout>
        <!-- 页面其他内容 -->
        <mtadmob:MTAdView AdUnitId="ca-app-pub-xxxxxxxxxxxxxxxx/zzzzzzzzzz"
                          AdSize="Banner"
                          VerticalOptions="End" />
    </StackLayout>
</ContentPage>

3. 插屏广告(代码触发)

通过按钮或其他事件触发插屏广告:

private async void ShowInterstitialBtn_Clicked(object sender, EventArgs e)
{
    if (CrossMTAdmob.Current.IsInterstitialLoaded())
    {
        CrossMTAdmob.Current.ShowInterstitial();
    }
    else
    {
        await CrossMTAdmob.Current.LoadInterstitial("ca-app-pub-xxxxxxxxxxxxxxxx/zzzzzzzzzz");
        // 可添加延迟或回调,确保加载完成后再显示
    }
}

四、排查要点

  • 广告不显示时,优先使用AdMob官方测试ID验证:
    • 横幅测试ID:ca-app-pub-3940256099942544/6300978111
    • 插屏测试ID:ca-app-pub-3940256099942544/1033173712
  • 确认测试设备已加入TestDevices列表,避免因未通过审核导致广告被拦截
  • 检查网络连接状态,AdMob需要稳定的互联网环境
  • 确保Xamarin.GooglePlayServices.Ads NuGet包版本为最新兼容版,MarcTron.Admob依赖此包

内容的提问来源于stack exchange,提问作者Gerson Rodriguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:10:29