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