Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter Flatter应用中的PlatformException(未加载广告,奖励视频显示失败,未加载广告,空)_Flutter_Admob_Firebase Admob - Fatal编程技术网

Flutter Flatter应用中的PlatformException(未加载广告,奖励视频显示失败,未加载广告,空)

Flutter Flatter应用中的PlatformException(未加载广告,奖励视频显示失败,未加载广告,空),flutter,admob,firebase-admob,Flutter,Admob,Firebase Admob,我正在尝试在我的Flitter应用程序中显示奖励视频广告。 有时它工作得很好,有时我会出现这样的错误“PlatformException(未加载广告,显示奖励视频失败,未加载广告,空)” 以下是我如何加载和显示广告: MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo( testDevices: ['6E85178A5E7B957403B497917D014D74'], ); try { awai

我正在尝试在我的Flitter应用程序中显示奖励视频广告。 有时它工作得很好,有时我会出现这样的错误“PlatformException(未加载广告,显示奖励视频失败,未加载广告,空)”

以下是我如何加载和显示广告:

  MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
    testDevices: ['6E85178A5E7B957403B497917D014D74'],
  );
  try {
      await RewardedVideoAd.instance.load(
          adUnitId:getRewardBasedVideoAdUnitId(), targetingInfo: targetingInfo);

      await RewardedVideoAd.instance.show();
    } on PlatformException catch (e) {

      Fluttertoast.showToast(
        msg: AppStrings.adFailed,
        toastLength: Toast.LENGTH_LONG,
        timeInSecForIosWeb: 5,
      );
    }


通常情况下,这种情况发生在广告展示成功后,下一次失败时,以及广告展示成功后的时间等等,也许我需要在广告展示成功后重置一些内容?

这有点晚了,但我希望它能帮助其他人

出现上述情况通常是因为
load
函数在实际加载ad之前返回

这个答案是一种技巧,而不是解决方案。

初始化插件后

检查下面的代码

showRewardAd() async {

  RewardedVideoAd.instance.load(
     adUnitId: RewardedVideoAd.testAdUnitId,
     targetingInfo: targetingInfo,
  );

  bool _adIsDisplayed = false;
  do {
    try {
      _adIsDisplayed = (await RewardedVideoAd.instance.show() ?? false);
    } catch (e) {}
  } while (!_adIsDisplayed);
 }
}
调用
showRewardAd
将强制显示广告。不要忘记在广告加载时添加加载程序以指示进度

我们可以利用这样一个事实,即
RewardedVideoAd
实例的
show()
方法在成功时返回
Future
,否则返回
Future

使用do while循环将使它一直尝试显示广告,直到成功为止,而不会抛出任何错误

这可能不是您想要的行为,因此您可能希望在循环过程中的某个点抛出错误,例如在5-10次尝试之后,因此我们没有无限循环