1

我做了一个安卓游戏。我在关闭测试模式的情况下添加了一些广告,然后我将游戏发布给内部测试人员并且广告正常工作,因此我修复了游戏中的一些问题并将游戏发布到 Playstore 上进行生产。

现在游戏已在 Playstore 上运行,广告无法正常工作。广告显示需要一些时间吗?统一货币化仪表板上有一个弹出窗口,我需要更新包名称并且我做到了,但广告仍然没有显示,尽管 Playstore 列表显示我的应用程序包含广告。

我的代码是:

public string gameId = "ihavemygameidhere";

public bool testMode = true;
void Start()
{
    // Initialize the Ads service:
    Advertisement.Initialize(gameId, testMode);
}

public void ShowInterstitialAd()
{
    // Check if UnityAds ready before calling Show method:
    if (Advertisement.IsReady())
    {
        Advertisement.Show();
    }
    else
    {
        Debug.Log("Interstitial ad not ready at the moment! Please try again later!");
    }
}
4

1 回答 1

0

当广告未准备好时,这意味着广告服务器尚未发送广告以供观看。我建议将IsReady()检查放在 中Coroutine,然后在玩家等待时显示加载屏幕 UI。IsReady()如果总是失败,我也会失败一些时间。

[SerializeField] private GameObect LoadingUI = null;
private float waitTime = 5f;

public void ShowInterstitialAd()
{
    StartCoroutine(ShowAd());
}

private IEnumerator ShowAd()
{
    float currentTime = 0.0f;
    
    LoadingUI.SetActive(true);
    
    while(currentTime <= waitTime && !Advertisement.IsReady())
    {
         currenTime += Time.deltaTime;
         yield return null;
    }
    
    // show the ad if it is now ready
    if(Advertisement.IsReady())
    {
         Advertisement.Show();   
    }
    else
    {
        Debug.LogError("Error: Ad was not able to be loaded in " + waitTime + " seconds!");
    }   
    
    LoadingUI.SetActive(false);
}

确保在检查器中为LoadingUI对象分配一些对象,这样玩家就不能再次点击查看广告,或者只是在广告尝试加载时阻止所有输入的一些 UI。我会使用 ScreenOverlay UI,因为它会在所有内容上呈现。

于 2021-05-04T19:34:16.463 回答