Admob Unity видео вознаграждение не работает

Я использовал рекламу Unity в своей игре на андроид, и все работало отлично, за исключением некоторых устройств, где реклама Unity иногда не показывалась. Итак, я хотел протестировать видео с наградами Admob, чтобы увидеть, смогу ли я получить лучшую производительность. Вот код, который я использую для Admob:

 public void RequestRewardBasedVideo()
    {
#if UNITY_EDITOR
        string adUnitId = "unused";
#elif UNITY_ANDROID
        string adUnitId = "ca-app-pub-243186545632812xxxxxxxxxxxx";
#elif UNITY_IPHONE
        string adUnitId = "unused";
#else
        string adUnitId = "unexpected_platform";
#endif

        RewardBasedVideoAd rewardBasedVideo = RewardBasedVideoAd.Instance;

        AdRequest request = new AdRequest.Builder().Build();
        rewardBasedVideo.LoadAd(request, adUnitId);
        showAdvertisment(rewardBasedVideo);
    }

    private void showAdvertisment(RewardBasedVideoAd rewardBasedVideo)
    {
        if (rewardBasedVideo.IsLoaded())
        {

            rewardBasedVideo.Show();
            rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
        }


    }
    public void HandleRewardBasedVideoRewarded(object sender, Reward args)
    {
        //reward 
    }

Я назначил RequestRewardBasedVideo() кнопке, но проблема в том, что видео не показывается! Я думаю, что я на правильном пути, потому что когда я нажимаю кнопку, консоль записывает в журнал:

Dummy .ctor
Dummy CreateRewardBasedVideoAd
Dummy LoadAd
Dummy IsLoaded
Dummy ShowRewardBasedVideoAd

Я уже пытался поместить приложение на свое устройство Android и импортировал пакет Google Admob для Unity, а также настроил рекламу на панели Admob. У кого-нибудь есть идеи, что я могу сделать, чтобы решить эту проблему?

3 ответа

Ваш код неверен. Вы должны разделить запрос объявления и показать объявление на две функции. В функции Start() вы вызываете функцию запроса, и функция показа рекламы должна быть подключена к вашей кнопке. Это потому, что когда вы запрашиваете объявление, вам потребуется некоторое время, чтобы сделать его доступным для вас.

Что делать, если видео не загружается? Вам нужно разобраться с этим случаем, прослушать событие загрузки, а затем нажать "Показать".

    if (rewardBasedVideo.IsLoaded())
        {

            rewardBasedVideo.Show();
            rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
        }else{
             rewardBasedVideo.OnAdLoaded += HandleVideoLoaded;
}



public void HandleVideoLoaded(object sender, Reward args)
{
     rewardBasedVideo.Show();
            rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
}


 public void HandleRewardBasedVideoRewarded(object sender, Reward args)
    {
       rewardBasedVideo.OnAdRewarded -= HandleRewardBasedVideoRewarded;
    }

Это может быть связано с отсутствием наградного видео или рекламного видео, доступного в настоящее время. Попробуйте протестировать тестовую рекламу. Включите идентификатор тестового устройства в свой код запроса следующим образом:

 AdRequest request = new AdRequest.Builder()
                         .AddTestDevice("34343")
                         .Build();

Попробуй с образцом ad UNIT Id, Надеюсь, это работает.

Другие вопросы по тегам