Как проверить, доступны ли вознагражденные объявления? - PullRequest
0 голосов
/ 30 января 2019

Мне нужно проверить, загружено или нет видео с вознаграждением, поэтому у меня есть эта функция:

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

это сценарий вызова видео с вознаграждением за вознаграждение: https://pastebin.com/g65zjBwt

enter image description here enter image description here enter image description here

# edit

Я удалил все операторы из IsAdAvailable(), за исключением AdmobController.instance.RequestRewardBasedVideo(); и return true, и я запускаю свою программу, и проблема все еще существует, сообщение Dummy IsLoaded продолжает показываться без остановки.так что я думаю проблема из этого утверждения AdmobController.instance.RequestRewardBasedVideo();.

1 Ответ

0 голосов
/ 30 января 2019

Вы можете прочитать о том, как реализовать вознагражденные видеообъявления, в документации по Google AdMob Mobile Ads SDK (Unity).

Лучший способ проверить, загружено ли поощрительное видео, - это подключитьв 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);
    }

Вы также должны использовать события, чтобы проверить, было ли объявление показано, закрыто, кликнуло и т. д.

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