xamarin Interstitia广告需要点击两次按钮才能显示

时间:2020-03-28 16:56:55

标签: c# android xamarin interstitial

我希望在按钮点击时展示插页式广告。 问题是它需要按两次按钮才能显示。

接口

public interface IAdInterstitial
{
    void ShowAd();
}

Android类

[assembly: Dependency(typeof(AdMobInterstitial))]
namespace CoronavirusTest.Droid
{
    class AdMobInterstitial:IAdInterstitial
    {
        InterstitialAd interstitialAd;
        public AdMobInterstitial()
        {
            interstitialAd = new InterstitialAd(Android.App.Application.Context);
            interstitialAd.AdUnitId = "ca-app-pub-2981452032483899/1747111924";
            LoadAd();
        }
        void LoadAd()
        {
            var requestbuilder = new AdRequest.Builder();
            interstitialAd.LoadAd(requestbuilder.Build());
        }
        public void ShowAd()
        {
            if (interstitialAd.IsLoaded)
                interstitialAd.Show();
            LoadAd();
        }
    }
}

按钮事件

private void Button_Clicked(object sender, EventArgs e)
{
    IAdInterstitial adInterstitial = DependencyService.Get<IAdInterstitial>();
    adInterstitial.ShowAd();
}

还在清单中添加了一些我在网上找到的代码,我在应用程序部分中阅读了这些代码

<activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" >
</activity>

1 个答案:

答案 0 :(得分:0)

在第一次单击按钮时原始代码加载广告,然后IsLoaded属性返回true以在第二次单击按钮时显示广告。

您可以尝试下面的代码。

  public interface IAdInterstitial
  {
    void LoadAd();
    void ShowAd();
  }

Android工具:

  [assembly: Dependency(typeof(AdMobInterstitial))]
  namespace XamarinDemo.Droid.DependencyService
  {
    public class AdMobInterstitial : IAdInterstitial
    {
      InterstitialAd interstitialAd;

      public AdMobInterstitial()
      {
        interstitialAd = new InterstitialAd(Android.App.Application.Context);
        interstitialAd.AdUnitId = "ca-app-pub-3940256099942544/1033173712"; //PUT YOUR ID HERE
        LoadAd();
      }

      public void LoadAd()
      {
        var requestbuilder = new AdRequest.Builder();
        interstitialAd.LoadAd(requestbuilder.Build());
      }

      public void ShowAd()
      {
        if (interstitialAd.IsLoaded)
            interstitialAd.Show();          
      }
   }  
}

用法:

public partial class Page1 : ContentPage
{
    public Page1()
    {
        InitializeComponent();
    }
    protected override void OnAppearing()
    {
        base.OnAppearing();
        DependencyService.Get<IAdInterstitial>().LoadAd();
    }
    private void btnLoad_Clicked(object sender, EventArgs e)
    {
       DependencyService.Get<IAdInterstitial>().ShowAd();
    }     
}

enter image description here