Как я могу реализовать рекламные объявления AdMob в единство

using UnityEngine;
using System.Collections;
using GoogleMobileAds;
using GoogleMobileAds.Api;
using UnityEngine.Advertisements;

public class GameAdvertising : MonoBehaviour {

    public RewardBasedVideoAd rewardBasedVideo;
    bool hasPlayed;

    void Start () {
        rewardBasedVideo = RewardBasedVideoAd.Instance;
    }

    public void playAd()
    {
        AdRequest rewardrequest = new AdRequest.Builder().Build(); 
        rewardBasedVideo.LoadAd(rewardrequest, "ca-app-pub-5920324855307233/4458481507");
        rewardBasedVideo.Show();
    }
}

В приведенном выше коде я попытался внедрить видеообъявление наградной рекламы в мою игру внутри метода, который вызывается нажатием кнопки пользовательского интерфейса. Реклама не появлялась на моем телефоне при вызове метода (работает на демо-скрипте, работает баннер и т. Д. Я успешно импортировал все SD-файлы и другие файлы). Что я сделал не так здесь и как мне правильно это вставить. Также, как я могу проверить, когда объявление закончено, чтобы я мог вознаграждать пользователя?

2 ответа

Решение

Вам необходимо подписаться на событие AdAdRewarded Ad RewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;,

Просто позвони RequestRewardBasedVideo() от Start Функция для проверки этого. Этот код ниже отсюда, и я немного его изменил.

private void RequestRewardBasedVideo()
{
    #if UNITY_EDITOR
        string adUnitId = "unused";
    #elif UNITY_ANDROID
        string adUnitId = "INSERT_AD_UNIT_HERE";
    #elif UNITY_IPHONE
        string adUnitId = "INSERT_AD_UNIT_HERE";
    #else
        string adUnitId = "unexpected_platform";
    #endif

    RewardBasedVideoAd rewardBasedVideo = RewardBasedVideoAd.Instance;

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

    //Show Ad
    showAdd(rewardBasedVideo);
}

private void showAdd(RewardBasedVideoAd rewardBasedVideo)
{
    if (rewardBasedVideo.IsLoaded())
    {
        //Subscribe to Ad event
        rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
        rewardBasedVideo.Show();
    }
}

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

public void HandleRewardBasedVideoRewarded(object sender, Reward args)
{
    string type = args.Type;
    double amount = args.Amount;
    //Reawrd User here
    print("User rewarded with: " + amount.ToString() + " " + type);
}

Я использую этот плагин https://github.com/unity-plugins/Unity-Admob и код, подобный этому.

загрузить видео

   Admob.Instance().loadRewardedVideo("ca-app-pub-3940256099942544/1712485313");

Показанный при окончании игры, убедитесь, что видео готово, прежде чем показывать его:

   if (Admob.Instance().isRewardedVideoReady()) {
     Admob.Instance().showRewardedVideo();
   }

обрабатывать рекламное событие

Admob.Instance().videoEventHandler += onInterstitialEvent;
    void onInterstitialEvent(string eventName, string msg)
    {
    Debug.Log("handler onAdmobEvent---" + eventName + "   " + msg);
    if (eventName == AdmobEvent.onAdLoaded)
    {
        Admob.Instance().showRewardedVideo();
    }
}
Другие вопросы по тегам