flutter 앱에서 firebase_admob에서 google_mobile_ads로 전환했습니다.

Flutter의 기사를 정리하고 책으로 만들었습니다.



  • 이 기사를 포함한 다양한 기사를 체계적으로 정리하고 책에 정리했습니다.
  • 향후는 이쪽을 최신화하기 위해, 최신 정보는 이쪽을 확인해 주세요
  • 10만문자를 넘는 초대작이 되어 있습니다(웃음)


  • 소개



    개요


  • google_mobile_ads를 사용하여 flutter 앱에 광고를 게재하십시오.
  • google_mobile_ads가 된 후 오버레이뿐만 아니라 위젯 트리에 내장 된 사용이 가능합니다.
  • 이 기사에서는 기본 앱으로 버튼을 누를 때마다 광고를 숨기거나 표시하는 앱을 만듭니다.

    대상 독자


  • flutter2에서 admob 광고를 표시하고 싶은 분
  • firebase_admob 플러그인에서 google_mobile_ads로 전환하려는 사람

  • 요약 기사


  • Flutter계의 기사의 정리

  • 관련 기사


  • flutter로 앱을 게시한 후 admob을 도입할 때까지

  • 시작 (전제 조건)


  • 위의 기사에서 flutter 설치, 새로운 프로젝트 작성, admob 계정 생성 및 광고 ID 지불을 할 수 있다고 이해할 수 있다고 생각합니다.

    목표(성취할 수 있는 것)


  • google_mobile_ads를 사용하여 앱에 광고를 게재할 수 있습니다.

  • 개발 환경



    console.sh
    flutter --version
    Flutter 2.0.1 • channel stable • https://github.com/flutter/flutter.git
    Framework • revision c5a4b4029c (6 days ago) • 2021-03-04 09:47:48 -0800
    Engine • revision 40441def69
    Tools • Dart 2.12.0
    

    본편



    패키지 가져오기


  • 패키지를 설치합니다. 버전은 적절하게 최신 버전을 따르십시오

  • pubsub.yml
    google_mobile_ads: "0.11.0+3"
    

    최소 SDK 버전 변경


  • 플러그인의 최소 보증 동작 SDK 버전의 관계로 minSdkVersion을 19로 설정합니다.

    android/app/build.gradle
    // 中略
    defaultConfig {
        //中略
        minSdkVersion 19  //19以上に変更する
    }
    

    관리 클래스 만들기



    AdBanner.dart
    import 'package:flutter/material.dart';
    import 'package:google_mobile_ads/google_mobile_ads.dart';
    import 'dart:io';
    
    // StatelessWidgetを継承して作成
    class AdBanner extends StatelessWidget {
      const AdBanner({
        this.size, // サイズは利用時に指定
      });
      final AdSize size;
      Widget build(BuildContext context) {
        final banner = BannerAd(
            // サイズ
            size: size,
            // 広告ID
            adUnitId: BannerAd.testAdUnitId, 
            // イベントのコールバック
            listener: AdListener(
              onAdLoaded: (Ad ad) => print('Ad loaded.'),
              onAdFailedToLoad: (Ad ad, LoadAdError error) {
                print('Ad failed to load: $error');
              },
              onAdOpened: (Ad ad) => print('Ad opened.'),
              onAdClosed: (Ad ad) => print('Ad closed.'),
              onApplicationExit: (Ad ad) => print('Left application.'),
            ),
            // リクエストはデフォルトを使う
            request: AdRequest())
          // 表示を行うloadをつける
          ..load();
    
        // 戻り値はContainerで包んで返す
        return Container(
            width: banner.size.width.toDouble(),
            height: banner.size.height.toDouble(),
            child: AdWidget(ad: banner));
      }
      // 広告IDをプラットフォームに合わせて取得
      static String get bannerAdUnitId {
        if (Platform.isAndroid) {
          return "XXX";
        } else if (Platform.isIOS) {
          return "XXX";
        } else {
          //どちらでもない場合は、テスト用を返す
          return BannerAd.testAdUnitId;
        }
      }
    }
    

    광고를 게재하는 쪽에서 사용



    main.dart
    void main() {
      //初期化
      WidgetsFlutterBinding.ensureInitialized();
      MobileAds.instance.initialize();
      runApp(MyApp());
    }
    
    class _MyHomePageState extends State<MyHomePage> {
     //中略
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(widget.title),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                // カウンタの偶奇で表示を切り替えて、バナーを表示(今回はラージサイズ)
                if (_counter % 2 != 0) AdBanner(size: AdSize.largeBanner),
                Text(
                  'You have pushed the button this many times:',
                ),
                Text(
                  '$_counter',
                  style: Theme.of(context).textTheme.headline4,
                ),
              ],
            ),
          ),
    }
    

    이미지







    소감


  • 오버레이로 공간을 확보하지 않아도 좋아졌기 때문에, 사용하기 편이 상당히 오른 인상입니다!!

  • 보충



    비고



  • 기조 강연 동영상의 admob_adk 동영상 (56 분경 ~)을 참고로했습니다.

    참고문헌



  • firebase_admob (비추천)
  • google_mobile_ads
  • 좋은 웹페이지 즐겨찾기