Обратный звонок для Google AdMob Reward Реклама не запускается - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь реализовать Google AdMob RewardAd, используя новый API для Xamarin Android. Объявление запускается как на тестовом устройстве, так и на эмуляторе, но в обоих случаях обратные вызовы для загрузки объявлений и их открытия не запускаются. Я следовал упомянутым шагам и не мог определить, что я делаю неправильно. Ниже приведен код. Любая помощь будет оценена.

PS: я заметил следующую ошибку при отладке. Это причина?

W / OkHttpClient (24133): Соединение с https://googleads.g.doubleclick.net/ утекло. Вы забыли закрыть тело ответа?

protected RewardedAd rewardedAd;

// Unrelated Code

MobileAds.Initialize(this, GetString(Resource.String.admob_app_id));
Load_Ad();

ImageButton b_bonus = FindViewById<ImageButton>(Resource.Id.button_bonus);
b_bonus.Click += (o, e) => { Show_Ad(); };

void Load_Ad()
{
    rewardedAd = new RewardedAd(this, Resources.GetString(Resource.String.reward_ad));
    rewardedAd.LoadAd(new AdRequest.Builder().AddTestDevice(Resources.GetString(Resource.String.test_id)).Build(), new AdLoadCallback());
}

public void Show_Ad()
{
    if (rewardedAd.IsLoaded)
    {
        Log.Debug("Game", "Ad Ready");
        rewardedAd.Show(this, new AdCallback(this));
    }
    else
    {
        Log.Debug("Game", "Ad Not Ready");
    }
}

class AdLoadCallback : RewardedAdLoadCallback
{
     public override void OnRewardedAdLoaded()
     {
          Log.Debug("Game", "Ad Loaded");
          base.OnRewardedAdLoaded();
     }

     public override void OnRewardedAdFailedToLoad(int p0)
     {
          Log.Debug("Game", "Ad Failed to Load");
          base.OnRewardedAdFailedToLoad(p0);
     }
}

class AdCallback : RewardedAdCallback
{
     GameActivity context;

     public AdCallback(GameActivity _context)
     {
         context = _context;
     }

     public override void OnRewardedAdClosed()
     {                
          Log.Debug("Game", "Ad Closed");
          base.OnRewardedAdClosed();
          context.Load_Ad();
     }

     public override void OnRewardedAdOpened()
     {
          Log.Debug("Game", "Ad Opened");
          base.OnRewardedAdOpened();
     }

     public override void OnRewardedAdFailedToShow(int p0)
     {
         Log.Debug("Game", "Ad Failed to Show");
         base.OnRewardedAdFailedToShow(p0);
     }

     public override void OnUserEarnedReward(IRewardItem p0)
     {
         Log.Debug("Game", "Reward Earned");
         base.OnUserEarnedReward(p0);
     }
}
...