颤抖-重新加载时出现奖励视频广告错误:“ ad_not_loaded,对于奖励视频显示失败,未加载任何广告,为null)” [英] flutter - Rewarded Video Ads Error when Reload : "ad_not_loaded, show failed for rewarded video, no ad was loaded, null)"
问题描述
当我呼叫 RewardedVideoAd.instance.load(adUnitId: xxx,targetingInfo:xyz);
Rewarded Video Ads >我发现以下错误:
i try to reload Rewarded Video Ads, when i call RewardedVideoAd.instance.load(adUnitId: "xxx", targetingInfo: xyz);
i find below error :
W / MessageQueue(13672):处理程序(android.os.Handler){1a13e8a}发送消息发送给死线程上的处理程序
W / MessageQueue(13672):java.lang.IllegalStateException:处理程序(android.os.Handler){1a13e8a}发送消息给死线程上的处理程序
W / MessageQueue(13672):在android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
W / MessageQueue(13672):在android.os.Handler.enqueueMessage(Handler.java:643 )
W / MessageQueue(13672):在android.os.Handler.sendMessageAtTime(Handler.java:612)
W / MessageQueue(13672):在android.os.Handler.sendMessageDelayed(Handler.java :582)
W / MessageQueue(13672):在android.os.Handler.sendEmptyMessageDelayed(Handler.java:546)
W / MessageQueue(13672):在android.os.Handler.sendEmptyM essage(Handler.java:531)
W / MessageQueue(13672):在com.google.android.gms.ads.exoplayer1.hc(:com.google.android.gms.policy_ads_fdr_dynamite @ 20300003 @ 20300003.251657827.251657827 :2)
W / MessageQueue(13672):位于com.google.android.gms.ads.internal.video.exoplayer1.fb(:com.google.android.gms.policy_ads_fdr_dynamite @ 20300003 @ 20300003.251657827.251657827: 1)
W / MessageQueue(13672):位于com.google.android.gms.ads.internal.webview.tE(:com.google.android.gms.policy_ads_fdr_dynamite @ 20300003 @ 20300003.251657827.251657827:5)
W / MessageQueue(13672):位于com.google.android.gms.ads.internal.webview.j.onPageFinished(:com.google.android.gms.policy_ads_fdr_dynamite @ 20300003 @ 20300003.251657827.251657827:2)
W / MessageQueue(13672):在uU.d(PG:307)
W / MessageQueue(13672):在aIV.handleMessage(PG:73)
W / MessageQueue(13672):在android.os.Handler.dispatchMessage(Handler.java:102)
W / MessageQueue(13672):位于android.os.Looper.loop(Looper.java:154)
W / MessageQueue(13672):在android.app.ActivityThread.main(ActivityThread.java:6780)
W / MessageQueue(13672):在java.lang.reflect.Method.invoke(本机方法)
W / MessageQueue(13672):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1496)
W / MessageQueue(13672):在com.android.internal.os.ZygoteInit。 main(ZygoteInit.java:1386)
W / ExoPlayerImplInternal(13672):发布后发送了message(1)。消息被忽略。
D / Graph(13672):removeVertex():insertDummyVertex,因为没有祖先。
D / ViewRootImpl @ b8db50eAdActivity:mHardwareRenderer.destroy()#4
D / ViewRootImpl @ b8db50eAdActivity:dispatchDetachedFromWindow
W/MessageQueue(13672): Handler (android.os.Handler) {1a13e8a} sending message to a Handler on a dead thread W/MessageQueue(13672): java.lang.IllegalStateException: Handler (android.os.Handler) {1a13e8a} sending message to a Handler on a dead thread W/MessageQueue(13672): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543) W/MessageQueue(13672): at android.os.Handler.enqueueMessage(Handler.java:643) W/MessageQueue(13672): at android.os.Handler.sendMessageAtTime(Handler.java:612) W/MessageQueue(13672): at android.os.Handler.sendMessageDelayed(Handler.java:582) W/MessageQueue(13672): at android.os.Handler.sendEmptyMessageDelayed(Handler.java:546) W/MessageQueue(13672): at android.os.Handler.sendEmptyMessage(Handler.java:531) W/MessageQueue(13672): at com.google.android.gms.ads.exoplayer1.h.c(:com.google.android.gms.policy_ads_fdr_dynamite@20300003@20300003.251657827.251657827:2) W/MessageQueue(13672): at com.google.android.gms.ads.internal.video.exoplayer1.f.b(:com.google.android.gms.policy_ads_fdr_dynamite@20300003@20300003.251657827.251657827:1) W/MessageQueue(13672): at com.google.android.gms.ads.internal.webview.t.E(:com.google.android.gms.policy_ads_fdr_dynamite@20300003@20300003.251657827.251657827:5) W/MessageQueue(13672): at com.google.android.gms.ads.internal.webview.j.onPageFinished(:com.google.android.gms.policy_ads_fdr_dynamite@20300003@20300003.251657827.251657827:2) W/MessageQueue(13672): at uU.d(PG:307) W/MessageQueue(13672): at aIV.handleMessage(PG:73) W/MessageQueue(13672): at android.os.Handler.dispatchMessage(Handler.java:102) W/MessageQueue(13672): at android.os.Looper.loop(Looper.java:154) W/MessageQueue(13672): at android.app.ActivityThread.main(ActivityThread.java:6780) W/MessageQueue(13672): at java.lang.reflect.Method.invoke(Native Method) W/MessageQueue(13672): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496) W/MessageQueue(13672): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386) W/ExoPlayerImplInternal(13672): Sent message(1) after release. Message ignored. D/Graph (13672): removeVertex() : insertDummyVertex, because there is no ancestor. D/ViewRootImpl@b8db50eAdActivity: mHardwareRenderer.destroy()#4 D/ViewRootImpl@b8db50eAdActivity: dispatchDetachedFromWindow
我将侦听器放在屏幕的 initState()
中。在此屏幕中,我有一个按钮
,如果我们点击该按钮,它应该显示 奖励视频广告
。
i place the listener in initState()
of my screen. in this screen i have a button
where if we tap it, it should show Rewarded Video Ads
.
此外,重新加载奖励广告
时出错,点击按钮以显示广告后,我遇到了以下错误(因为广告实例为 null ):
Moreover, after getting error when Rewarded Ads
reloaded, i got below error after tap the button to show ads (because ads instance was null):
E / flutter(13672):[错误:flutter /lib/ui/ui_dart_state.cc(148)]未处理的异常:PlatformException(ad_not_loaded,对于奖励视频显示失败,未加载广告,null)
E / flutter(13672):#0 StandardMethodCodec .decodeEnvelope(软件包:flutter / src / services / message_codecs.dart:564:7)
E / flutter(13672):#1 MethodChannel.invokeMethod(软件包:flutter / src / services / platform_channel.dart:316: 33)
E / flutter(13672):
E / flutter(13672):#2 _invokeBooleanMethod(package:firebase_admob / firebase_admob.dart:518:61)
E / flutter(13672) :
E / flutter(13672):#3 RewardedVideoAd.show(package:firebase_admob / firebase_admob.dart:392:12)
E/flutter (13672): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: PlatformException(ad_not_loaded, show failed for rewarded video, no ad was loaded, null) E/flutter (13672): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:564:7) E/flutter (13672): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:316:33) E/flutter (13672): E/flutter (13672): #2 _invokeBooleanMethod (package:firebase_admob/firebase_admob.dart:518:61) E/flutter (13672): E/flutter (13672): #3 RewardedVideoAd.show (package:firebase_admob/firebase_admob.dart:392:12)
我放置了奖励视频位于
,下面是代码: initState()
的广告监听器
I place Rewarded Video Ads Listener
at initState()
, below are the codes:
@override
void initState() {
super.initState();
...
RewardedVideoAd.instance.listener =
(RewardedVideoAdEvent event, {String rewardType, int rewardAmount}) {
if (event == RewardedVideoAdEvent.completed) {
setState(() {
print ("::debug:: ads should be reloaded");
RewardedVideoAd.instance.load(adUnitId: "ca-app-pub-3940256099942544/5224354917", targetingInfo: targetingInfos);
});
}
};
...
但是,如果我将代码放在按钮的 onstronged
如下所示,视频广告将在点击2-3次后显示(其中在调试时显示 ads = null
)
However, if i put code at button's onPressed
like below, the video ads will show after tap for 2-3 times (where at debug is show ads = null
)
RaisedButton(
onPressed: () {
RewardedVideoAd.instance.show().whenComplete(() {
RewardedVideoAd.instance.load(adUnitId: "ca-app-pub-3940256099942544/5224354917", targetingInfo: targetingInfos);
})
},
...
任何想法吗?
在此先感谢...
推荐答案
问题似乎在于事件完成$ c
Seems like the issue was with the event completed
. Check out this code.
MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
keywords: <String>['flutterio', 'beautiful apps'],
contentUrl: 'https://flutter.io',
childDirected: false,
testDevices: <String>[], // Android emulators are considered test devices
);
bool _loaded = false;
@override
void initState() {
super.initState();
// load ad in the beginning
RewardedVideoAd.instance
.load(adUnitId: RewardedVideoAd.testAdUnitId, targetingInfo: targetingInfo)
.catchError((e) => print("error in loading 1st time"))
.then((v) => setState(() => _loaded = v));
// ad listener
RewardedVideoAd.instance.listener = (RewardedVideoAdEvent event, {String rewardType, int rewardAmount}) {
if (event == RewardedVideoAdEvent.closed) {
RewardedVideoAd.instance
.load(adUnitId: RewardedVideoAd.testAdUnitId, targetingInfo: targetingInfo)
.catchError((e) => print("error in loading again"))
.then((v) => setState(() => _loaded = v));
}
};
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text(
"Loaded = ${_loaded}",
style: TextStyle(fontSize: 32, fontWeight: FontWeight.bold),
),
),
floatingActionButton: FloatingActionButton(
// show ad on FAB click
onPressed: () async {
await RewardedVideoAd.instance.show().catchError((e) => print("error in showing ad: ${e.toString()}"));
setState(() => _loaded = false);
},
),
);
}
这篇关于颤抖-重新加载时出现奖励视频广告错误:“ ad_not_loaded,对于奖励视频显示失败,未加载任何广告,为null)”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!