在Xamarin Forms中,如果AdMob广告无法显示,可能是由于以下几个原因:
确保在Android和iOS项目中正确配置了AdMob广告的应用ID和广告单元ID。在Android项目的AndroidManifest.xml
文件中添加以下元数据:
在iOS项目的Info.plist
文件中添加以下键值对:
GADApplicationIdentifier
YOUR_IOS_APP_ID
在Android项目中,确保已添加了Xamarin.GooglePlayServices.Base
和Xamarin.GooglePlayServices.Ads
NuGet包。
在iOS项目中,确保已添加了Xamarin.Google.iOS.MobileAds
NuGet包。
在Android项目中,在MainActivity.cs
文件的OnCreate
方法中添加以下代码请求广告权限:
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
MobileAds.Initialize(ApplicationContext, "YOUR_ANDROID_APP_ID");
// 请求广告权限
var status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.AccessCoarseLocation);
if (status != PermissionStatus.Granted)
{
status = await CrossPermissions.Current.RequestPermissionsAsync(Permission.AccessCoarseLocation);
}
LoadApplication(new App());
在iOS项目中,在AppDelegate.cs
文件的FinishedLaunching
方法中添加以下代码请求广告权限:
MobileAds.Initialize("YOUR_IOS_APP_ID");
确保在页面的OnAppearing
方法中加载广告,并在广告加载完成后将其添加到页面中。以下是一个简单的示例:
public class AdPage : ContentPage
{
private AdView adView;
public AdPage()
{
adView = new AdView
{
AdUnitId = "YOUR_AD_UNIT_ID",
AdSize = AdSize.Banner,
VerticalOptions = LayoutOptions.End,
HorizontalOptions = LayoutOptions.Center
};
adView.OnAdLoaded += (sender, e) =>
{
// 广告加载完成后添加到页面中
stackLayout.Children.Add(adView);
};
adView.LoadAd(new AdRequest.Builder().Build());
// 页面布局
var stackLayout = new StackLayout
{
Children = { /* 页面内容 */ }
};
Content = stackLayout;
}
protected override void OnAppearing()
{
base.OnAppearing();
// 加载广告
adView.LoadAd(new AdRequest.Builder().Build());
}
}
确保在上述代码示例中替换YOUR_ANDROID_APP_ID
、YOUR_IOS_APP_ID
和YOUR_AD_UNIT_ID
为您的实际值。
通过以上步骤,您应该能够在Xamarin Forms应用中正确显示AdMob广告。