1
У меня в игре много событий, которые срабатывают много раз во время игры. И я хочу показывать рекламу каждое странное время, когда происходит событие. Но это показывает объявления только один раз, а потом, кажется, что она загружается новые объявления бесконечноAdmob загружает объявления только один раз
using GoogleMobileAds.Api;
using System;
using UnityEngine;
public class AdMobManager : MonoBehaviour
{
#if UNITY_ANDROID
private static AdMobManager _instance;
private bool isLoading;
private bool show;
private int isShown = -1;
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx";
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxx";
#else
string adUnitId = "unexpected_platform";
#endif
public int IsShown
{
get
{
if (isShown < 0)
{
isShown = PlayerPrefs.GetInt("shown", 0);
}
return isShown;
}
set { isShown = value; }
}
public static AdMobManager Instance
{
get { return _instance; }
set { _instance = value; }
}
InterstitialAd interstitial;
void Awake()
{
if (_instance == null)
_instance = this;
IsShown = PlayerPrefs.GetInt("shown", 0);
interstitial = new InterstitialAd(adUnitId);
}
void Start()
{
RequestAd();
}
public void Show()
{
Debug.Log("SHOW IS STARTED");
if (IsShown == 0)
{
if (interstitial.IsLoaded())
{
IsShown = 1;
Debug.Log("SHOW ADS");
interstitial.Show();
}
else
{
show = true;
Debug.Log("REQUESTING A NEW AD");
RequestAd(true);
}
}
else
{
IsShown = 0;
}
}
private void RequestAd(bool show = false)
{
if (isLoading)
{
Debug.Log("RETURN FROM REQUEST AD");
return;
}
isLoading = true;
AdRequest request = new AdRequest.Builder().Build();
// Load the banner with the request.
interstitial.LoadAd(request);
if (show)
interstitial.OnAdLoaded += ShowAd;
interstitial.OnAdFailedToLoad += FailedToLoad;
interstitial.OnAdClosed += AdClosed;
}
private void AdClosed(object sender, EventArgs e)
{
RequestAd();
}
private void FailedToLoad(object sender, AdFailedToLoadEventArgs e)
{
isLoading = false;
show = false;
Debug.Log("FAILED TO LOAD: " + e.Message);
}
void ShowAd(object sender, System.EventArgs args)
{
Debug.Log("LOADED");
if (show)
{
IsShown = 1;
Debug.Log("SHOW ADS");
interstitial.Show();
show = false;
}
isLoading = false;
}
void OnApplicationPause(bool pause)
{
if (pause)
PlayerPrefs.SetInt("shown", isShown);
}
#endif
}
мой код неправильно или это провал с AdMob?
Я думаю IsShown Мессинг нашу логику, попробуйте комментируя его везде и построить его заново. –
это все, ничего не изменилось – user2686299
делиться своими журналами с ошибками –