Я пытаюсь реализовать 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);
}
}