Эмулятор Android PlatformException(load_failed_ad, невозможно перезагрузить неудачное объявление, id=571273309, null)

Я включил рекламу в свой проект Flutter. Когда я нажимаю кнопку "Загрузить рекламу" в первый раз на эмуляторе Android, реклама загружается и отлично отображается. Но когда я закрываю объявление и снова нажимаю кнопку "Загрузить объявления", я получаю следующее исключение:

I/flutter (1549): событие InterstitialAd MobileAdEvent.closed D/DynamitePackage( 1549): создание экземпляра com.google.android.gms.ads.ChimeraAdManagerCreatorImpl I/Ads ( 1549): этот запрос отправляется с тестового устройства. W/flutter ( 1549): onAdFailedToLoad: 3 I/Ads ( 1549): Ad не удалось загрузить: 3 I/flutter ( 1549): InterstitialAd событие MobileAdEvent.failedToLoad E/flutter ( 1549): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Необработанное исключение: PlatformException(load_failed_ad, невозможно перезагрузить неудачное объявление, id=571273309, null)

Доктор трепетания:

[√] Flutter (стабильный канал, v1.9.1+hotfix.6, в Microsoft Windows [версия 10.0.18362.418], локаль en-US) • Flutter версии 1.9.1 + hotfix.6 в C:\Users\olgam\source\flutter • Версия фреймворка 68587a0916 (9 недель назад), 2019-09-13 19:46:58 -0700 • Версия движка b863200c37 • Версия Dart 2.5.0

[√] Набор инструментов Android - разработка для устройств Android (Android SDK версии 28.0.3) • Android SDK в C:\Users\olgam\AppData\Local\Android\sdk • Местоположение Android NDK не настроено (необязательно; полезно для поддержки встроенного профилирования) • Платформа android-28, инструменты сборки 28.0.3 • Бинарный файл Java по адресу: C:\Program Files\Android\Android Studio\jre\bin\java • Версия Java Среда выполнения OpenJDK (сборка 1.8.0_202-release-1483-b03) • Принимаются все лицензии Android.

[√] Android Studio (версия 3.5) • Android Studio в C:\Program Files\Android\Android Studio • Плагин Flutter версии 41.0.2 • Плагин Dart версии 191.8593 • Версия Java Среда выполнения OpenJDK (сборка 1.8.0_202-release-1483-b03)

[√] Подключенное устройство (доступно 2) • SM G930U • d77c5f0b • android-arm64 • Android 8.0.0 (API 26) • Android SDK для x86 • emulator-5554 • android-x86 • Android 9 (API 28) (эмулятор)

• Проблем не обнаружено!

Вот мой код:

class MainPage extends StatefulWidget {
  final String _locale;

  MainPage(this._locale);

  @override
  State<StatefulWidget> createState() {
    return MainPageState();
  }
}

class MainPageState extends State<MainPage> {
  InterstitialAd _interstitialAd;
  static const MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
      childDirected: true, keywords: ['Games', 'Puzzles', 'Kids']);

  InterstitialAd buildInterstitial() {
    return InterstitialAd(
      adUnitId: Constants.UNIT_ID,
      targetingInfo: targetingInfo,
      listener: (MobileAdEvent event) {
        print("InterstitialAd event $event");
        if (event == MobileAdEvent.failedToLoad) {
          _interstitialAd.load();
        } else if (event == MobileAdEvent.closed) {
          _interstitialAd = buildInterstitial()..load();
        }
      },
    );
  }

  @override
  void initState() {
    FirebaseAdMob.instance.initialize(appId: Constants.APP_ID);
    _interstitialAd = buildInterstitial()..load();
    super.initState();
  }

  @override
  void dispose() {
    _interstitialAd?.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Kids Development'),
      ),
      body: Container(
        width: double.infinity,
        margin: EdgeInsets.all(15.0),
        child: RaisedButton(
              child: Text('Load ads'),
              onPressed: () {
                //print('--------trying to build interstitial');
                //_interstitialAd = buildInterstitial();
                _interstitialAd
                  ..load()
                  ..show();
              },
            )
       );
   }
}

Это происходит только с реальным идентификатором рекламного блока. Если я использую InterstitialAd.testAdUnitId, все работает нормально.

2 ответа

В моем случае проблема заключалась в элементах управления блокировкой, которые я установил в консоли AdMob. Я сделал их менее строгими, и теперь все работает нормально.

Ваше объявление не загружается из-за проблем с заполнением. Из документации Код ошибки 3 означает, что запрос был отправлен, но объявление не было возвращено из-за нехватки ресурсов (проверьте отчеты AdMob, чтобы узнать о коэффициенте соответствия). Повторите попытку после отправки дополнительных запросов объявлений

обычно это происходит с новыми учетными записями / идентификаторами рекламных блоков. Я не понимаю, почему это продолжает происходить в эмуляторе, ведь Google должен просто отправлять тестовые объявления -_-

Другие вопросы по тегам