颤抖-重新加载时出现奖励视频广告错误:“ ad_not_loaded,对于奖励视频显示失败,未加载任何广告,为null)” [英] flutter - Rewarded Video Ads Error when Reload : "ad_not_loaded, show failed for rewarded video, no ad was loaded, null)"

查看:162
本文介绍了颤抖-重新加载时出现奖励视频广告错误:“ ad_not_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);
    })    
},
...

任何想法吗?

在此先感谢...

推荐答案

问题似乎在于事件完成

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆