Android emulator PlatformException(加载失败的广告,无法重新加载失败的广告,id=571273309,null)

Android emulator PlatformException(加载失败的广告,无法重新加载失败的广告,id=571273309,null),android,flutter,firebase-admob,Android,Flutter,Firebase Admob,我在我的颤振项目中加入了广告。当我第一次在Android emulator上点击“加载广告”按钮时,广告会加载并完美显示。但当我关闭广告并再次单击“加载广告”按钮时,我得到了以下例外: I/颤振(1549):间隙事件MobileAdEvent.closed D/DynamicPackage(1549):实例化com.google.android.gms.ads.ChimeraAdManagerCreatorImpl I/Ads(1549):此请求从测试设备发送。 W/颤振(1549):onAdF

我在我的颤振项目中加入了广告。当我第一次在Android emulator上点击“加载广告”按钮时,广告会加载并完美显示。但当我关闭广告并再次单击“加载广告”按钮时,我得到了以下例外:

I/颤振(1549):间隙事件MobileAdEvent.closed D/DynamicPackage(1549):实例化com.google.android.gms.ads.ChimeraAdManagerCreatorImpl I/Ads(1549):此请求从测试设备发送。 W/颤振(1549):onAdFailedToLoad:3 I/Ads(1549):Ad未能加载:3 I/颤振(1549):间隙事件MobileAdEvent.failedToLoad E/flatter(1549):[错误:flatter/lib/ui/ui\u dart\u state.cc(148)]未处理的异常:平台异常(加载失败的ad,无法重新加载失败的ad,id=571273309,null)

颤振医生:

[√] 颤振(通道稳定,v1.9.1+修补程序.6,在Microsoft Windows[Version 10.0.18362.418]上,美国语言环境) •颤振版本1.9.1+热修复程序.6,位于C:\Users\olgam\source\颤振 •框架修订68587a0916(9周前),2019-09-13 19:46:58-0700 •发动机版本b863200c37 •Dart版本2.5.0

[√] Android工具链-为Android设备开发(Android SDK版本28.0.3) •C:\Users\olgam\AppData\Local\Android\SDK上的Android SDK •未配置Android NDK位置(可选;用于本机评测支持) •平台android-28,构建工具28.0.3 •Java二进制文件:C:\Program Files\Android\Android Studio\jre\bin\Java •Java版本OpenJDK运行时环境(build 1.8.0_202-release-1483-b03) •接受所有Android许可证

[√] Android Studio(3.5版) •Android Studio位于C:\Program Files\Android\Android Studio •颤振插件版本41.0.2 •Dart插件版本191.8593 •Java版本OpenJDK运行时环境(build 1.8.0_202-release-1483-b03)

[√] 已连接设备(2个可用) •SM G930U•d77c5f0b•安卓-arm64•安卓8.0.0(API 26) •为x86构建的Android SDK•emulator-5554•Android-x86•Android 9(API 28)(emulator)

•未发现任何问题

这是我的密码:

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();
              },
            )
       );
   }
}
class主页扩展StatefulWidget{
最终字符串_locale;
主页(此区域设置);
@凌驾
状态createState(){
返回MainPageState();
}
}
类MainPageState扩展状态{
间质体_间质体;
静态常量MobileAdTargetingInfo targetingInfo=MobileAdTargetingInfo(
childDirected:true,关键字:[“游戏”,“拼图”,“孩子]);
间质的{
返回间隙翼(
adUnitId:Constants.UNIT\u ID,
targetingInfo:targetingInfo,
侦听器:(MobileAdEvent事件){
打印(“间隙事件$event”);
如果(事件==MobileAdEvent.failedToLoad){
_间隙载荷();
}else if(事件==MobileAdEvent.closed){
_填隙LAD=构建填隙()…加载();
}
},
);
}
@凌驾
void initState(){
FirebaseAdMob.instance.initialize(appId:Constants.APP\u ID);
_填隙LAD=构建填隙()…加载();
super.initState();
}
@凌驾
无效处置(){
_填隙物?.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“儿童发展”),
),
主体:容器(
宽度:double.infinity,
边距:所有边缘集(15.0),
孩子:升起按钮(
子项:文本(“加载广告”),
已按下:(){
//打印('----尝试构建间隙');
//_intersticalad=buildInterstitial();
_间隙体
…加载()
…显示();
},
)
);
}
}

这只发生在真实的广告单元id上。如果我使用Interstitularad.testAdUnitId,则everythins工作正常。

由于填充问题,您的广告无法加载。从错误代码3可以看出,请求已发送,但由于缺乏库存,未返回任何广告(请查看您的AdMob报告以了解匹配率)。发送更多广告请求后请检查


这种情况通常发生在新帐户/ad单元ID上。我不明白为什么它会一直发生在模拟器上,因为谷歌应该只发送测试广告-

在我的情况下,问题在于我在AdMob控制台中设置的阻止控件。我降低了它们的严格性,现在一切都正常了。

在我看来,应该有两个级别的测试广告,一个“本地”不查询互联网,一个完整的生活,因为它将失败,你被困在正确的方式设计…你是怎么做到的?