谷歌移动广告实施减慢了 Flutter App

Posted

技术标签:

【中文标题】谷歌移动广告实施减慢了 Flutter App【英文标题】:Google mobile Ads implementation slowed down flutter App 【发布时间】:2021-06-15 10:00:12 【问题描述】:

我一直在我的 Flutter 应用上实施横幅广告,我成功地展示了横幅,但我的应用运行速度非常慢,以至于崩溃并关闭。 我一直在寻找解决这个问题的方法,但似乎找不到任何解决方案,尽管很多人都遇到了同样的问题。 如果你们能帮助我,我将不胜感激。

我的代码如下:

adhelper.dart

import 'dart:io';
import 'package:google_mobile_ads/google_mobile_ads.dart';

class AdHelper 

  Future<InitializationStatus> initialization;

  AdHelper(this.initialization);

  static String get bannerAdUnitId => Platform.isandroid
  ? 'ca-app-pub-3940256099942544/6300978111' \\Test ads
  : 'ca-app-pub-3940256099942544/2934735716'; \\Test ads



mainpage.dart

class _MainPageState extends State<MainPage>...

  final Completer<BannerAd> bannerCompleter = Completer<BannerAd>();

...

  BannerAd banner;

...

@override
  void didChangeDependencies()
    super.didChangeDependencies();
    final adHelper = Provider.of<AdHelper>(context);
    adHelper.initialization.then((status)
      setState(() 
        banner ??= BannerAd(
        adUnitId: AdHelper.bannerAdUnitId,
        size: AdSize.banner,
        request: AdRequest(),
          listener: AdListener(
            onAdLoaded: (Ad ad) 
              print('Ad loaded: $BannerAd.');
              bannerCompleter.complete(ad as BannerAd);
              ,
            onAdFailedToLoad: (Ad ad, LoadAdError error) 
              print('Ad failed to load: $BannerAd, $error');
              bannerCompleter.completeError(null);
              ,
            onAdOpened: (Ad ad) => print('Ad opened: $BannerAd.'),
            onAdClosed: (Ad ad) => print('Ad closed: $BannerAd.'),
            onApplicationExit: (Ad ad) => print('App Exit: $BannerAd.'),
              ),
            );
          Future<void>.delayed(Duration(seconds: 1), () => banner?.load());
      );
    );
  

@override
  void dispose() 
    super.dispose();
    banner?.dispose();
    banner = null;
  

@override
  Widget build(BuildContext context) 
    return FutureBuilder<BannerAd>(
      future: bannerCompleter.future,
      builder: (BuildContext context, AsyncSnapshot<BannerAd> snapshot) 
        Widget child;

        switch (snapshot.connectionState) 
          case ConnectionState.none:
          case ConnectionState.waiting:
          case ConnectionState.active:
            child = Container();
            break;
          case ConnectionState.done:
            if (snapshot.hasData) 
              child = AdWidget(ad: banner);
             else 
              child = Text('Error loading $BannerAd');
            
        
...

                      if (banner == null)
                        SizedBox(height: 50,)
                      else
                        Container(
                        width: banner.size.width.toDouble(),
                        height: banner.size.height.toDouble(),
                          child: child,

还有我的 main.dart

Future<void> main() async 
  WidgetsFlutterBinding.ensureInitialized();
  final initFuture = MobileAds.instance.initialize();
  final adHelper = AdHelper(initFuture);

....

runApp(
      Provider.value(
          value: adHelper,
        builder: (context, child) => MyApp(),
      ),

【问题讨论】:

我也遇到了同样的问题,请问您有解决办法吗? 广告拖慢了应用程序?瞧!除了资源消耗之外,广告会减慢一切 【参考方案1】:

此问题仅出现在使用 Android 10 或更低版本的设备上,我的设备(使用 android 10)上遇到了同样的问题。 我推荐使用这个插件,它解决了我和其他很多人的问题。

native_admob_flutter

【讨论】:

以上是关于谷歌移动广告实施减慢了 Flutter App的主要内容,如果未能解决你的问题,请参考以下文章

低价谷歌的移动UI框架Flutter实战企业级APP实战开发高级案例课程Flutter开发深入浅出

flutter —— 谷歌打造的移动开发平台

谷歌的 Mobile UI 框架 Flutter Beta 3 发布

谷歌发布Flutter beta 1 :可开发原生APP,支持跨平台

Facebook 移动广告应用安装未显示在活动报告中

谷歌移动广告和 Kindle Fire