flutter admob 横幅广告打开后不重新加载

问题描述 投票:0回答:2

在我的 flutter 项目中,使用 flutter BloC,我开始使用 google_mobile_ads 包使用 admob 广告。横幅广告的显示工作正常。但是,当您点击广告并返回应用程序后,广告就会消失。当广告最终刷新时,它不再可点击。

期望的结果是广告在导航后保留,或者在返回应用程序时加载新广告。

返回应用程序时,它会记录: W/广告 (27214):#004 网络视图被破坏。忽略动作。

这很可能来自 adListener 回调。唯一触发的是 onAdOpened 回调。 onAdClosed 永远不会被调用。返回应用程序时,ads isLoaded 方法始终返回 true。

到目前为止我已经尝试过了

  • 处理广告然后重新加载
  • 重建页面时创建全新的广告

当搜索 webview is destroy 错误时,我找到了类似 this 的答案,他们手动销毁了 webview。我不知道如何做到这一点,因为我使用的是谷歌移动广告包,而不是使用任何类型的网络视图。这里唯一的方法是对包提供的广告对象进行 dispose() ,我已经尝试过。

我正在制作的广告:

BannerAd(
  adUnitId: 'ca-app-pub-3940256099942544/6300978111',
  request: AdRequest(),
  size: AdSize.largeBanner,
  listener: AdListener(
    onAdClosed: (ad) {
      print('banner ad closed');
    },
    onAdLoaded: (ad) => print('banner ad loaded'),
    onAdFailedToLoad: (ad, error) {
      print('banner ad failed');
    },
    onAdOpened: (ad) async {
      print('banner ad opened');
    },
    onApplicationExit: (ad) => ad.dispose(),
    onAppEvent: (ad, string1, string2) => print('ad app event: $string1, $string2'),
    onNativeAdClicked: (ad) => print('banner native ad clicked'),
  ),
);

横幅放置在页面底部

Scaffold(
  body: BlocBuilder<HomeBloc, HomeState>(
    builder: (context, state) {
      return Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        mainAxisSize: MainAxisSize.max,
        children: [
          // rest of page content
          if (state.bannerAd != null)
            Container(
              color: Colors.white,
              width: size.width,
              height: 100,
              child: Center(
                child: AdWidget(ad: state.bannerAd),
              ),
            ),
        ],
      );
    },
  ),
)

非常感谢您就广告未按预期重新加载的原因提供的任何建议。

解决方案

打开广告时, onApplicationExit 被调用,处理我的广告。只需从回调中删除 dispose 调用并将其移动到我的 BloC 的 close 方法(我在我的项目中使用 flutter BloC)即可解决问题,并且在打开后导航回应用程序时广告仍保持加载状态。

android flutter dart admob
2个回答
1
投票

onApplicationExit 在离开应用程序的过程中被调用。
由于您此时已处理广告,因此当您返回应用程序时它不会出现。


0
投票

你能分享一下我如何一起使用admob和bloc吗?

© www.soinside.com 2019 - 2024. All rights reserved.