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
, Надеюсь, это работает.