#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. хорошо, спасибо, я попробую это