Xamarin.Forms Google Services AdMob

问题描述

我正在尝试在Xamarin.Forms应用(目前为Android版本)中实施AdMob。到目前为止,这是我所做的:

  1. 在我的共享项目中创建了一个自定义控件AdViewControl:
public class AdControlView : Xamarin.Forms.View
{
}
  1. 显示广告的页面中,我在xaml中添加自定义控件:
xmlns:ads="clr-namespace:MyFeelingBuddyTwo.Views"
<ads:AdControlView BackgroundColor="Red"/> 
  1. 在Android项目(AndroidManifest.xml)中:

    
<Meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="ca-app-pub-myappid"/>
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

  1. 仍然在Android项目中,我创建了一个AdVieWrenderer:

    
[assembly: ExportRenderer(typeof(MyFeelingBuddyTwo.Views.AdControlView),typeof(AdVieWrenderer))]
namespace MyFeelingBuddyTwo.Droid
{
    class AdVieWrenderer : VieWrenderer<Views.AdControlView,AdView>
    {
        string adUnitId = "myadunitid";
        AdSize adSize = AdSize.SmartBanner;
        AdView adView;

        AdView CreateAdView()
        {
            if (adView != null)
                return adView;

            adView = new AdView(Forms.Context);
            adView.AdSize = adSize;
            adView.AdUnitId = adUnitId;
            var arParams = new LinearLayout.LayoutParams(LayoutParams.WrapContent,LayoutParams.WrapContent);
            adView.LayoutParameters = arParams;
            adView.LoadAd(new AdRequest.Builder().Build());

            return adView;
        }

        protected override void OnElementChanged(ElementChangedEventArgs<AdControlView> e)
        {
            base.OnElementChanged(e);
            if(Control == null)
            {
                CreateAdView();
                SetNativeControl(adView);
            }
        }
    }
}

  1. 在MainActivity中,在加载应用程序之前初始化MobileAds:

    MobileAds.Initialize(ApplicationContext,"ca-app-pub-appid");
            

我跑步时得到红色背景,但没有加载任何广告。有什么想法吗?

解决方法

在AdControlView类中,我添加了:

FLASK_PORT

现在,我可以在横幅占位符中看到“测试广告”。