簡體   English   中英

如何查看獎勵廣告是否可用?

[英]How to check if Rewarded Ads are available?

我需要檢查獎勵視頻是否已加載,所以我具有以下功能:

private bool IsAdAvailable()
{
    if (AdmobController.instance.rewardBasedVideo == null) return false;

    bool isLoaded = AdmobController.instance.rewardBasedVideo.IsLoaded();

    if (!isLoaded)
    {
        AdmobController.instance.RequestRewardBasedVideo();
    }

    return isLoaded;
}

這是RequestRewardBasedVideo函數:

         public void RequestRewardBasedVideo()
         {
#if UNITY_ANDROID
               string adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
               string adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
               string adUnitId = "unexpected_platform";
#endif

              // Create an empty ad request.
              AdRequest request = new AdRequest.Builder().Build();
             // Load the rewarded video ad with the request.
              this.rewardBasedVideo.LoadAd(request, adUnitId);
         }

這是顯示獎勵視頻的功能(如果已加載),否則顯示該消息給用戶。

public void ShowRewardedAds()
{
    if (rewardBasedVideo.IsLoaded())
    {
        rewardBasedVideo.Show();
    }
    else
    {
        MonoBehaviour.print("Reward based video ad is not ready yet");
    }

}

但是,當我統一運行程序時,在控制台中此消息將不斷顯示:

Dummy IsLoaded
UnityEngine.Debug:Log(Object)

就像程序不斷檢查獎勵視頻是否已加載。

我試圖刪除IsAdAvailable()所有語句,但return isLoaded除外,我將其替換為return true

並且消息停止顯示,沒有停止,它只顯示了一次。 這就是我想要的。

那么,有沒有更好的方法來檢查獎勵視頻是否已加載?

如果您需要有關我的代碼的更多信息,請隨時詢問。

這是我的Admob控制器腳本: https : //pastebin.com/TNNPKxQF

這是獎勵的視頻按鈕腳本: https : //pastebin.com/FipHV9wt

這是Rewarded Video CallBack腳本: https : //pastebin.com/g65zjBwt

在此處輸入圖片說明 在此處輸入圖片說明 在此處輸入圖片說明

#編輯

我從IsAdAvailable()刪除了所有語句, IsAdAvailable() AdmobController.instance.RequestRewardBasedVideo(); return true然后我運行我的程序,問題仍然存在,消息Dummy IsLoaded不斷顯示,沒有停止。 所以我認為此語句AdmobController.instance.RequestRewardBasedVideo();

您可以在Google AdMob移動廣告SDK(統一)文檔中閱讀如何實施獎勵視頻廣告

檢查獎勵視頻是否已加載的最好方法是,鈎入RewardBasedVideoAd OnAdLoaded事件:

using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardBasedVideoAd rewardBasedVideo;
    ...

    public void Start()
    {
        // Get singleton reward based video ad reference.
        this.rewardBasedVideo = RewardBasedVideoAd.Instance;

        // Called when an ad request has successfully loaded.
        rewardBasedVideo.OnAdLoaded += HandleRewardBasedVideoLoaded;
        // Called when an ad request failed to load.
        rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad;

        this.RequestRewardBasedVideo();
    }

    private void RequestRewardBasedVideo()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/1712485313";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded video ad with the request.
        this.rewardBasedVideo.LoadAd(request, adUnitId);
    }

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

    public void HandleRewardBasedVideoFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print(
            "HandleRewardBasedVideoFailedToLoad event received with message: "
                             + args.Message);
    }

您還應該使用事件檢查廣告是否已顯示,關閉,點擊等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM