Как я могу реализовать рекламные объявления 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();
}
}