Будет ли изменяться ограничение частоты показов промежуточной рекламы в пользовательском блоке InterstitialAd.Show (), если лимит достигнут? - PullRequest
0 голосов
/ 21 июня 2019

В настоящее время у меня запускается промежуточное тестовое объявление, когда игрок достигает Game Over. Это поведение, которое я не хочу. Я хочу, чтобы мое рекламное объявление показывалось случайным образом, возможно, дважды за 10 или 15 минут.

Мое промежуточное объявление определяется внутри скрипта AdManager, прикрепленного к игровому объекту AdManager в инспекторе, и определяется как одиночный:

public class AdManager : MonoBehaviour
{

public static AdManager instance;

//Test id: ca-app-pub-3940256099942544~3347511713
private string APP_ID = ".......";

private BannerView bannerAD;
private InterstitialAd interstitialAD;


private void Awake()
{
    if (instance != null)
    {
        Destroy(gameObject);
    }
    else
    {
        instance = this;
        DontDestroyOnLoad(gameObject);
    }
}


 private void RequestInterstitialAD()
{
    string interstitial_ID = "ca-app-pub-3940256099942544/1033173712";
    interstitialAD = new InterstitialAd(interstitial_ID);


    // Called when an ad request has successfully loaded.
    interstitialAD.OnAdLoaded += HandleOnAdLoaded;
    // Called when an ad request failed to load.
    interstitialAD.OnAdFailedToLoad += HandleOnAdFailedToLoad;
    // Called when an ad is clicked.
    interstitialAD.OnAdOpening += HandleOnAdOpened;
    // Called when the user returned from the app after an ad click.
    interstitialAD.OnAdClosed += HandleOnAdClosed;
    // Called when the ad click caused the user to leave the application.
    interstitialAD.OnAdLeavingApplication += HandleOnAdLeavingApplication;


    //FOR PRODUCTION
    //AdRequest adRequest = new AdRequest.Builder().Build();


    //FOR TESTING
    AdRequest adRequest = new AdRequest.Builder().AddTestDevice("2077ef9a63d2b398840261c8221a0c9b").Build();

    interstitialAD.LoadAd(adRequest);


    void HandleOnAdLoaded(object sender, EventArgs args)
    {

    }

    void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {

    }

    void HandleOnAdOpened(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdOpened event received");

    }

    void HandleOnAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdClosed event received");

    }

    void HandleOnAdLeavingApplication(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLeavingApplication event received");
    }
}


public void Display_Interstitial()
{
    if (interstitialAD.IsLoaded())
    {
        interstitialAD.Show();
    } 
}


public void DestroyInterstitial()
{
    interstitialAD.Destroy();
}

Запрос на показ моей промежуточной рекламы выполняется в игровом объекте, ответственном за загрузку сцен, с именем MenuLoader. Я звоню на объявление внутри Coroutine для загрузки Game Over Scene после задержки.

public void LoadGameOver()
{
    StartCoroutine(WaitAndLoad_GameOver());
}

private IEnumerator WaitAndLoad_GameOver()
{
    yield return new WaitForSeconds(gameOver_loadDelay);
    FindObjectOfType<AdManager>().Display_Interstitial();
    SceneManager.LoadScene("Game Over");
}

Мне нужно поведение, при котором я не хочу продолжать перезапускать мое приложение, чтобы увидеть рекламу один раз. Теперь из-за недостатка знаний я не знаю, как это будет работать на практике, когда мои промежуточные объявления показываются в производственном режиме.

Буду ли я вести себя так же? Если да, то как мне адаптировать его к моим требованиям?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...