xamarin Interstitia ad нужно дважды нажать кнопку, чтобы появиться - PullRequest
0 голосов
/ 28 марта 2020

Я хочу показывать промежуточную рекламу при нажатии кнопки. Проблема в том, что для его отображения необходимо дважды нажать кнопку.

Интерфейс

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 голосов
/ 30 марта 2020

Исходный код загружает объявление при первом нажатии кнопки, а затем свойство 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

...