Баннер единства не отображается

#unity3d

Вопрос:

Мое баннерное объявление действительно отображается в тестовом режиме, но без тестового режима-нет. Я использовал шаблон кода с веб-сайта unity. Я также обратился в службу поддержки рекламы unity, но они не смогли найти ошибку. они присылают мне видео с моим заявлением,и в этом видео сработала баннерная реклама.

Вот мой код:

 using UnityEngine; using UnityEngine.UI; using UnityEngine.Advertisements;  public class newadsystem : MonoBehaviour {  // For the purpose of this example, these buttons are for functionality testing:  [SerializeField] Button _loadBannerButton;  [SerializeField] Button _showBannerButton;  [SerializeField] Button _hideBannerButton;   [SerializeField] BannerPosition _bannerPosition = BannerPosition.BOTTOM_CENTER;   [SerializeField] public string _androidAdUnitId = "Banner_Android";  [SerializeField] string _iOsAdUnitId = "Banner_iOS";  public string _adUnitId = "Banner_Android";   void Start()  {  Advertisement.Initialize("4395157",false,true);  // Disable the button until an ad is ready to show:  _showBannerButton.interactable = true;  _hideBannerButton.interactable = true;   // Set the banner position:  Advertisement.Banner.SetPosition(_bannerPosition);   // Configure the Load Banner button to call the LoadBanner() method when clicked:  _loadBannerButton.onClick.AddListener(LoadBanner);  _loadBannerButton.interactable = true;  }   // Implement a method to call when the Load Banner button is clicked:  public void LoadBanner()  {  // Set up options to notify the SDK of load events:  BannerLoadOptions options = new BannerLoadOptions  {  loadCallback = OnBannerLoaded,  errorCallback = OnBannerError  };   // Load the Ad Unit with banner content:  Advertisement.Initialize("4395157", false, true);  Advertisement.Banner.Load(_adUnitId, options);  Advertisement.Initialize("4395157", false, true);  }   // Implement code to execute when the loadCallback event triggers:  void OnBannerLoaded()  {  Debug.Log("Banner loaded");   // Configure the Show Banner button to call the ShowBannerAd() method when clicked:  _showBannerButton.onClick.AddListener(ShowBannerAd);  // Configure the Hide Banner button to call the HideBannerAd() method when clicked:  _hideBannerButton.onClick.AddListener(HideBannerAd);   // Enable both buttons:  _showBannerButton.interactable = true;  _hideBannerButton.interactable = true;  }   // Implement code to execute when the load errorCallback event triggers:  void OnBannerError(string message)  {  Debug.Log($"Banner Error: {message}");  // Optionally execute additional code, such as attempting to load another ad.  }   // Implement a method to call when the Show Banner button is clicked:  void ShowBannerAd()  {  // Set up options to notify the SDK of show events:  BannerOptions options = new BannerOptions  {  clickCallback = OnBannerClicked,  hideCallback = OnBannerHidden,  showCallback = OnBannerShown  };   // Show the loaded Banner Ad Unit:  Advertisement.Initialize("4395157", false, true);  Advertisement.Banner.Show(_adUnitId, options);  }   // Implement a method to call when the Hide Banner button is clicked:  void HideBannerAd()  {  // Hide the banner:  Advertisement.Banner.Hide();  }   void OnBannerClicked()  {  Debug.Log("Banner Clicked!");  }  void OnBannerShown()  {  Debug.Log("Banner Shown!");  }  void OnBannerHidden()  {  Debug.Log("Banner Hidden");  }   void OnDestroy()  {  // Clean up the listeners:  _loadBannerButton.onClick.RemoveAllListeners();  _showBannerButton.onClick.RemoveAllListeners();  _hideBannerButton.onClick.RemoveAllListeners();  } }  

Я заглянул в журнал устройств Android, и там было: «Unity : Ошибка баннера: UnityAds не инициализирован». но я несколько раз вызываю функцию инициализации. PS: я не очень хорошо говорю по-английски.

Ответ №1:

Взгляните на Start () свой код:

 Advertisement.Initialize("4395157",false,true);  // Disable the button until an ad is ready to show:  _showBannerButton.interactable = true;  _hideBannerButton.interactable = true;  

А потом на OnBannerLoaded ()

 // Enable both buttons:  _showBannerButton.interactable = true;  _hideBannerButton.interactable = true;  

Но эти кнопки уже interactable = true есть . Может быть, тебе нужно Start () вот так измениться:

 Advertisement.Initialize("4395157",false,true);  // Disable the button until an ad is ready to show:  _showBannerButton.interactable = false;  _hideBannerButton.interactable = false;  

Обновление 1 Попробуйте изменить свой код следующим образом:

 void Start() {  _showBannerButton.interactable = false;  _hideBannerButton.interactable = false;   Advertisement.Initialize("4395157",false,true);   _loadBannerButton.onClick.AddListener(LoadBanner);  _showBannerButton.onClick.AddListener(ShowBannerAd);  _hideBannerButton.onClick.AddListener(HideBannerAd);  _loadBannerButton.interactable = true; }  public void LoadBanner() {  BannerLoadOptions options = new BannerLoadOptions  {  loadCallback = OnBannerLoaded,  errorCallback = OnBannerError  };  if (Advertisement.isInitialized) {  Advertisement.Banner.Load(_adUnitId, options);  } else Debug.LogWarning ("Adverisement not initialized! Try again later"); }  void OnBannerLoaded()  {  Debug.Log("Banner loaded");  BannerOptions options = new BannerOptions  {  clickCallback = OnBannerClicked,  hideCallback = OnBannerHidden,  showCallback = OnBannerShown  };  Advertisement.Banner.SetPosition(_bannerPosition);    _showBannerButton.interactable = true;  _hideBannerButton.interactable = true; }  void ShowBannerAd() {  Advertisement.Banner.Show(_adUnitId, options); }  

Комментарии:

1. Сначала это было ложно, но после того, как это не сработало, я изменил его на истинное, чтобы посмотреть, не изменит ли это что-то, но это не так

2. Есть ли вывод «Баннер загружен» в журнале перед «Unity : Ошибка баннера: UnityAds не инициализирован»? Является ли ваша сборка «Сборкой для разработки»?

3. спасибо за ответ, нет, в журнале нет загруженного баннера, и это не сборка для разработки.

4. Итак, похоже, вы пытаетесь вызвать что-то вроде Banner.Load() или Banner.Show() до правильной инициализации UnityAds. Взгляните на ответ выше, раздел «Upadate 1». Используйте isInitialized и Debug.Log() для проверки инициализации UnityAds или нет.

5. хорошо, спасибо, я попробую это