Closed Hetagkaty closed 1 month ago
Спасибо за Ваше обращение, для разбора создана задача с номером PCODESUP-2645. Мы ознакомимся и вернемся с ответом в течение 2 дней, возможно запросим дополнительную информацию.
Thank you for your message, a task with the number PCODESUP-2645 has been created for analysis. We will get acquainted and return with the answer within 2 days, we may request additional information.
Есть новости? )
Здравствуйте! К сожалению у нас не получается воспроизвести проблему. Предоставьте пожалуйста сэмпл/снипет кода, чтобы мы могли понять как вы работаете с Interstitital.
Здравствуйте! К сожалению у нас не получается воспроизвести проблему. Предоставьте пожалуйста сэмпл/снипет кода, чтобы мы могли понять как вы работаете с Interstitital.
using GoogleMobileAds.Api; using UnityEngine; using YandexMobileAds; using YandexMobileAds.Base; using UnityEngine.Events; using System;
public class Advertising : MonoBehaviour { private InterstitialAd interstitialAdAdmob;
private InterstitialAdLoader interstitialAdLoaderYandex;
private Interstitial interstitialAdYandex;
private const string androidAdUnitId = "admob id";
private const string iOSAdUnitId = "admob id";
private const string androidYandexAdsAdUnitId = "yandex id";
private const string iOSYandexAdsAdUnitId = "yandex id";
private string currentYandexAdsAdUnitId;
[SerializeField] private UnityEvent adLoadedEvent = default;
[SerializeField] private UnityEvent adFailedLoadEvent = default;
private void Awake()
{
currentYandexAdsAdUnitId = (Application.platform == RuntimePlatform.IPhonePlayer) ? iOSYandexAdsAdUnitId : androidYandexAdsAdUnitId;
SetupLoaderYandex();
DestroyInterstitialYandex();
RequestInterstitialYandex();
}
private void Start()
{
RequestAndLoadAdmobInterstitialAd();
}
private void RequestAndLoadAdmobInterstitialAd()
{
string _adUnitId = androidAdUnitId;
string _adUnitId = iOSAdUnitId;
string _adUnitId = "unused";
if (interstitialAdAdmob != null)
{
interstitialAdAdmob.Destroy();
interstitialAdAdmob = null;
}
var adRequest = new GoogleMobileAds.Api.AdRequest();
InterstitialAd.Load(_adUnitId, adRequest,
(InterstitialAd ad, LoadAdError error) =>
{
// if error is not null, the load request failed.
if (error != null || ad == null)
{
adFailedLoadEvent?.Invoke();
return;
}
interstitialAdAdmob = ad;
RegisterEventHandlers(ad);
adLoadedEvent?.Invoke();
});
}
private void RegisterEventHandlers(InterstitialAd ad)
{
ad.OnAdFullScreenContentClosed += () =>
{
RequestAndLoadAdmobInterstitialAd();
};
ad.OnAdFullScreenContentFailed += (GoogleMobileAds.Api.AdError error) =>
{
RequestAndLoadAdmobInterstitialAd();
};
}
private void SetupLoaderYandex()
{
interstitialAdLoaderYandex = new InterstitialAdLoader();
interstitialAdLoaderYandex.OnAdLoaded += HandleInterstitialLoaded;
}
public void HandleInterstitialLoaded(object sender, InterstitialAdLoadedEventArgs args)
{
interstitialAdYandex = args.Interstitial;
interstitialAdYandex.OnAdFailedToShow += HandleInterstitialFailedToShow;
interstitialAdYandex.OnAdDismissed += HandleInterstitialDismissed;
}
public void HandleInterstitialDismissed(object sender, EventArgs args)
{
DestroyInterstitialYandex();
RequestInterstitialYandex();
}
public void HandleInterstitialFailedToShow(object sender, EventArgs args)
{
DestroyInterstitialYandex();
RequestInterstitialYandex();
}
private void RequestInterstitialYandex()
{
string adUnitId = currentYandexAdsAdUnitId;
AdRequestConfiguration adRequestConfiguration = new AdRequestConfiguration.Builder(adUnitId).Build();
interstitialAdLoaderYandex.LoadAd(adRequestConfiguration);
}
public void ShowInterstitialAdvertising()
{
if (interstitialAdAdmob != null && interstitialAdAdmob.CanShowAd())
{
interstitialAdAdmob.Show();
}
else if (interstitialAdYandex != null)
{
interstitialAdYandex.Show();
}
}
private void DestroyInterstitialAdmob()
{
if (interstitialAdAdmob != null)
{
interstitialAdAdmob.Destroy();
interstitialAdAdmob = null;
}
}
private void DestroyInterstitialYandex()
{
if (interstitialAdYandex != null)
{
interstitialAdYandex.Destroy();
interstitialAdYandex = null;
}
}
public void DestroyAllAdvertising()
{
DestroyInterstitialAdmob();
DestroyInterstitialYandex();
}
}
Использую совместно с Admob. Этот скрипт есть в каждой сцене (например: сцена меню и сцена игры).
Здравствуйте! Приносим извинения за поздний ответ. Мы обнаружили проблему в коде плагина, исправление будет опубликовано в следующей версии.
В качестве временного решения, установите EventHandler для OnAdFailedToLoad
в SetupLoaderYandex()
:
private void SetupLoaderYandex()
{
interstitialAdLoaderYandex = new InterstitialAdLoader();
interstitialAdLoaderYandex.OnAdLoaded += HandleInterstitialLoaded;
interstitialAdLoaderYandex.OnAdFailedToLoad += HandleInterstitialFailedToLoad;
}
public void HandleInterstitialFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
Debug.Log($"HandleInterstitialFailedToLoad event received with message: {args.Message}");
}
Unity 2022.3.13 Yandex Mobile ads lite 6.1.0 В Crashlitycs, как на андроид так и на iOS, полно таких ошибок: YandexMobileAds.InterstitialAdLoader+<>c__DisplayClass11_1.b3 (YandexMobileAds.InterstitialAdLoader+<>cDisplayClass11_1)
YandexMobileAds.Common.MainThreadDispatcher.Update (YandexMobileAds.Common.MainThreadDispatcher)
Видел похожую тему (https://github.com/yandexmobile/yandex-ads-unity-plugin/issues/65), но там написано, что в одном из обновлений исправили проблему. ![Uploading yma.png…]()