Unity AdMobs Android не отображает баннер

Я пытаюсь интегрировать AdMobs в свой проект Unity 2D (игра предназначена для мобильных платформ).

После поиска в Интернете и ответов здесь я не смог найти решение своей проблемы.

  • Когда я переношу свою игру на каждую платформу, iOS работает и отображает вид баннера.

  • Android не отображает вид баннера.

  • Я попытался удалить и повторно импортировать пакет Google, но Android все равно не показывает баннер.

Я сделал именно то, что описывает учебник Google по этой ссылке. https://developers.google.com/admob/unity/start

Но по-прежнему не работает Android не отображает вид баннера с рекламой (проверено на 2 отдельных устройствах). Вот мой код, в котором я добавил строку appId как к обработчикам манифеста, так и к plist в проекте.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
using System;

public class GoogleAdsHandler:MonoBehaviour {

    private BannerView bannerView;

    // Use this for initialization
    void Start () {
#if UNITY_ANDROID
                string appId = Consts.ANDROID_AD_APPID;
#elif UNITY_IPHONE
        string appId = Consts.IOS_AD_APPID;
#else
                string appId = "unexpected_platform";
#endif
        InitilizeAdMob ();
    }

    private void InitilizeAdMob () {
#if UNITY_ANDROID
        string appId = Consts.ANDROID_AD_APPID;
#elif UNITY_IPHONE
        string appId = Consts.IOS_AD_APPID;
#else
        string appId = "unexpected_platform";
#endif
        MobileAds.Initialize (appId);

        this.RequestBanner ();
    }

    private void RequestBanner () {
#if UNITY_ANDROID
        string adUnitId = Consts.ANDROID_BANNER_ID;
#elif UNITY_IPHONE
        string adUnitId = Consts.IOS_BANNER_ID;
#else
            string adUnitId = "unexpected_platform";
#endif
        // Create a 320x50 banner at the top of the screen.
        bannerView = new BannerView (adUnitId, AdSize.Banner, AdPosition.Bottom);
        AdRequest request = new AdRequest.Builder ().Build ();
        bannerView.LoadAd (request);
        bannerView.Show ();
        bannerView.OnAdLoaded += HandleOnAdLoaded;
    }

    public void HandleOnAdLoaded (object sender, EventArgs args) {
        MonoBehaviour.print ("HandleAdLoaded event received");
    }
}

Этот скрипт прикреплен к игровому объекту в моей сцене главного меню.

Был бы признателен за помощь в этом вопросе.

С наилучшими пожеланиями.

Рони.


person rony_y    schedule 30.04.2019    source источник


Ответы (2)


Вы пытаетесь показать объявление, не проверяя, загружено ли объявление, а возможно, нет. Вы должны подписаться на событие HandleOnAdLoaded перед вызовом bannerView.LoadAd() и bannerView.Show().

Ваш метод Start просто вызывает InitilizeAdMob, поскольку назначаемая вами строка никуда не передается, и вы делаете то же самое в InitilizeAdMob, поэтому я бы переписал ваш класс следующим образом:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
using System;

public class GoogleAdsHandler : MonoBehaviour {

    private BannerView bannerView;

    // Use this for initialization
    void Start () {
       InitilizeAdMob ();
    }

    private void InitilizeAdMob () {
#if UNITY_ANDROID
        string appId = Consts.ANDROID_AD_APPID;
#elif UNITY_IPHONE
        string appId = Consts.IOS_AD_APPID;
#else
        string appId = "unexpected_platform";
#endif
        MobileAds.Initialize (appId);
        this.RequestBanner ();
    }

    private void RequestBanner () {
#if UNITY_ANDROID
        string adUnitId = Consts.ANDROID_BANNER_ID;
#elif UNITY_IPHONE
        string adUnitId = Consts.IOS_BANNER_ID;
#else
        string adUnitId = "unexpected_platform";
#endif
        // Create a 320x50 banner at the top of the screen.
        bannerView = new BannerView (adUnitId, AdSize.Banner, AdPosition.Bottom);
        bannerView.OnAdLoaded += HandleOnAdLoaded;
        AdRequest request = new AdRequest.Builder ().Build ();
        bannerView.LoadAd (request);
    }

    public void HandleOnAdLoaded (object sender, EventArgs args) {
        MonoBehaviour.print ("HandleAdLoaded event received");
        bannerView.Show();
    }
}
person Dave    schedule 01.05.2019
comment
Приветствую всех, кто попробовал ответ, приведенный выше, и множество других вещей, включая переустановку пакета единства и Android-студию вместе, если кто-нибудь знает, как решить эту проблему, он будет очень признателен, как и до того, как iOS все еще работает. Android не работает. - person rony_y; 05.05.2019
comment
Вы уверены, что у вас правильные идентификаторы приложений и объявлений? Я протестировал его, и он отлично работает. - person Dave; 05.05.2019
comment
Привет, @Dave, да, я скопировал идентификатор приложения в манифест Android и в сценарий .cs, и, как я уже сказал, iOS работает отлично, можете ли вы дать мне процесс, который вы использовали? - person rony_y; 05.05.2019
comment
Измените ваш Android appId и adUnitId в вашем сценарии, чтобы проверить идентификаторы, предоставленные admob: ca-app-pub-3940256099942544~3347511713 и ca-app-pub-3940256099942544/6300978111. Дайте мне знать, если вы получите тестовую баннерную рекламу. - person Dave; 05.05.2019
comment
Привет, Дэйв, с тестовой рекламой, теперь она работает на Android, как я могу заставить ее работать с настоящей рекламой? - person rony_y; 05.05.2019
comment
Привет. Вы должны указать неправильное приложение для Android и идентификатор баннера Android для производства. Убедитесь, что вы копируете правильные идентификаторы из консоли admob. Будьте осторожны с настоящей рекламой, если вы хотите использовать настоящие производственные идентификаторы, вам необходимо установить свое устройство в качестве тестового устройства, иначе вы рискуете заблокировать свою учетную запись. Подробнее читайте здесь: включить тестовые устройства - person Dave; 05.05.2019
comment
Эй, Дэйв, большое спасибо за вашу помощь, я скопировал идентификатор приложения и идентификатор баннера, так как я не могу сказать, что не так с его производственной версией, я попробую еще раз, большое спасибо. - person rony_y; 05.05.2019
comment
Нет, я попробовал еще раз с проверенным Android appId и bannerId, которые копируются точно так же, как список в моей учетной записи, как указано до того, как iOS работает. Тестовая реклама Android работает, но реальная реклама Android по-прежнему не работает. Объявления. - person rony_y; 06.05.2019
comment
Ваше приложение опубликовано? Я не уверен, но, возможно, Google блокирует живую рекламу на вашем устройстве с помощью вашей учетной записи Google. Я бы попробовал с другим устройством, с другой учетной записью и другой сетью, когда приложение будет опубликовано. Все остальное вроде настроено правильно. Вы можете проверить наличие ошибок с помощью OnAdFailedToLoad и adb logcat. - person Dave; 06.05.2019
comment
Мое приложение не опубликовано, возможно, это проблема, спасибо всем за помощь. - person rony_y; 07.05.2019
comment
Хорошо, проблема была в том, что Дейв заявил, что приложение необходимо сначала опубликовать в Google Play Store. Я опубликовал приложение (перед экспортом APK я запустил Android rsolver из Unity Assets -> Play service Resolve -> Android Resolver -> Force resolver), затем экспортировал APK, загруженный в магазин Google Play, теперь появляется реклама, спасибо всем за вашу помощь. - person rony_y; 08.05.2019
comment
Спасибо за добавление события HandleOnAdLoaded. Я не нашел этого в документации google/unity. - person Christian Rios; 15.10.2019

Вот некоторые распространенные причины:

  1. Убедитесь, что вы обновили AdMob с вашими платежными данными.
  2. Убедитесь, что объявления, которые вы создали в AdMob, являются рекламными баннерами.
  3. Проверьте свою панель управления AdMob, чтобы увидеть статус своих объявлений. Активны ли они?
  4. Убедитесь, что вы использовали правильный идентификатор рекламного блока.
  5. Подождите 24 часа, может пройти некоторое время, прежде чем объявление станет активным в вашем регионе

Вы также можете использовать тестовые идентификаторы для проверки своего кода adMOb, предоставленные Google: https://developers.google.com/admob/android/test-ads

person Kavita_p    schedule 30.04.2019
comment
Я обновил свой ответ, перейдите по ссылке, чтобы проверить свой код AdMob с тестовыми идентификаторами. - person Kavita_p; 30.04.2019
comment
Здравствуйте, спасибо за ваш ответ, я пробовал все вышеперечисленное, но все равно не работает, прошло почти 2 недели, и, как я уже сказал, на iOS все работает отлично. - person rony_y; 30.04.2019