Эмулятор 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 должен просто отправлять тестовые объявления -_-