Facebook Audience Network-Flutter横幅广告仅在第一个屏幕中加载,此后的其他屏幕则不加载横幅广告

问题描述

我正在尝试在多个屏幕上投放facebook_audience_network条横幅广告。

我正在使用以下方法在每个Flutter应用程序屏幕中创建横幅广告。我面临的问题是我第一次成功加载哪个屏幕(带有横幅广告实施代码的屏幕)。

但是,当我转到另一个屏幕时,它还是不会加载广告。我还实现了逻辑,即30秒后在整个应用中发出广告请求。在第一个屏幕中加载后,我仍然无法在其他屏幕上加载广告。

createBannerAd() {
    _currentAd = Container(
      alignment: Alignment(0.5,1),child: FacebookBannerAd(
        placementId:  IMG_16_9_APP_INSTALL#2312433698835503_2964944860251047,bannerSize: BannerSize.STANDARD,listener: (result,value) {
          switch (result) {
            case BannerAdResult.ERROR:
              _adShown = false;
              print("Error: $value");
              break;
            case BannerAdResult.LOADED:
              print("Loaded: $value");
              break;
            case BannerAdResult.CLICKED:
              print("Clicked: $value");
              break;
            case BannerAdResult.LOGGING_IMPRESSION:
              print("Logging Impression: $value");
              break;
          }
        },),);
    setState(() {});
  }

错误日志:

D/EgretLoader(25084): EgretLoader(Context context)
D/EgretLoader(25084): The context is not activity
W/cr_AwContents(25084): Application attempted to call on a destroyed WebView
W/cr_AwContents(25084): java.lang.Throwable
W/cr_AwContents(25084): at org.chromium.android_webview.AwContents.a(PG:126)
W/cr_AwContents(25084): at TA0.loadingStateChanged(PG:2)
W/cr_AwContents(25084): at android.os.MessageQueue.nativePollOnce(Native Method)
W/cr_AwContents(25084): at android.os.MessageQueue.next(MessageQueue.java:325)
W/cr_AwContents(25084): at android.os.Looper.loop(Looper.java:148)
W/cr_AwContents(25084): at android.app.ActivityThread.main(ActivityThread.java:6634)
W/cr_AwContents(25084): at java.lang.reflect.Method.invoke(Native Method)
W/cr_AwContents(25084): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
W/cr_AwContents(25084): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:822)
I/Flutter (25084): Error: {error_message: No Fill,error_code: 1001,invalidated: false,placement_id: IMG_16_9_APP_INSTALL#2312433698835503_2964944860251047}

我没有得到这段代码的问题。我已经按照文档中的步骤进行操作。

那么有人可以建议我解决这个问题吗?我认为这是一个主要问题。

谢谢。

解决方法

你可以这样做

  FacebookBannerAd fbBannerAd() {
    return FacebookBannerAd(
      placementId: "IMG_16_9_APP_INSTALL#2312433698835503_2964944860251047",// Platform.isAndroid ? "YOUR_ANDROID_PLACEMENT_ID" : "YOUR_IOS_PLACEMENT_ID",bannerSize: BannerSize.STANDARD,listener: (result,value) {
        switch (result) {
          case BannerAdResult.ERROR:
            print("Error: $value");
            break;
          case BannerAdResult.LOADED:
            print("Loaded: $value");
            break;
          case BannerAdResult.CLICKED:
            print("Clicked: $value");
            break;
          case BannerAdResult.LOGGING_IMPRESSION:
            print("Logging Impression: $value");
            break;
        }
      },);
  }

并将其称为您想要显示的屏幕

  Widget fbBannerAD(){
    return Container(
        alignment: Alignment(0.5,1),child: customAd.fbBannerAd()
    );
  }