Google Mobile Ads for Flutterの最新1.2.0使ってみた

2022/06/17に公開

自己紹介

はじめましての方もそうでない方も、レシピサイトやSNSなどメニューを横断的に取り込める

おうちメニュー

というプロダクトをやっているkentarohです。

iOS Android
App Store Play Store

本題

以前の記事 Google Mobile Ads for Flutterの最新0.13.0使ってみた
https://zenn.dev/kentaroh/articles/729a52a3e90bca
でGoogle Mobile Adsを紹介していました。2022年6月16日現在は最新v1.2.0になってるではありませんか。技術的負債はすぐ解消しましょう!公式ドキュメント見てもバナー広告の例は載ってなかったので、記事にしてみました。変更点を中心に解説したいと思います。

前提

AdMobでアカウント作成、広告IDを取得しています。
バナー広告での例をお伝えします。
基本的なことは
https://zenn.dev/kentaroh/articles/729a52a3e90bca
をご参考にしてください。

手順

  1. ビルド時のトラブル
  2. バナーの初期化
  3. バナーウィジェットの設置

1 パッケージの取得

今回のはバージョンを0.13.0 →1.2.0に上げました。
ビルドで失敗しました。

android/build.gradleで
ext.kotlin_version = '1.6.10'

android/app/build.gradleで
compileSdkVersion 31
targetSdkVersion 31

に変更しました。

31にあげると、トラブルが発生することがあります。

https://qiita.com/ryo_mm2d/items/b85cc6f3778b540f9ada

Android 12から「コンポーネントのエクスポートの安全性を改善」ということで、インテントフィルタを持つ、Activity/Service/BroadcastReceiverに対して、andorid:exported属性を明示的に宣言する必要があります。

AndroidManifest.xmlで設定が必須の項目がありますので下記をセットしました。
android:exported="true"

これで解決!

2 バナーの初期化

ここでの変更点は、テストで使う広告ユニットIDの設定です。

    final BannerAd _bannerAd = BannerAd(
      size: AdSize.banner,
      // .testAdUnitIdがDeprecatedになったので公式ドキュメントのデモ広告ユニットIDを使う。
      // 公式
      // https://developers.google.com/admob/android/test-ads?hl=ja
      // https://developers.google.com/admob/ios/test-ads?hl=ja
      // バナーのところをチェック
      // - BannerAd.testAdUnitId
      adUnitId: Platform.isAndroid
          ? 'ca-app-pub-3940256099942544/6300978111'
          : 'ca-app-pub-3940256099942544/2934735716',
      listener: const BannerAdListener(),
      request: const AdRequest(),
    )..load();

3 バナーウィジェットの設置

こちらはおさらいです。下部の真ん中にバナーを表示するコード。
広告自体は、AdWidgetでadに先ほど作ったadを適用するだけです。

	Container(
	  child: Align(
	    alignment: Alignment.bottomCenter,
	    child: SizedBox(
	      width: _bannerAd.size.width.toDouble(),
	      height: _bannerAd.size.height.toDouble(),
	      child: AdWidget(ad: _bannerAd),
	    ),
	  ),
	),

参考

pub.dev
https://pub.dev/packages/google_mobile_ads
github
https://github.com/googleads/googleads-mobile-flutter
android:exported="false" とはどういうことか?
https://qiita.com/ryo_mm2d/items/b85cc6f3778b540f9ada
自分の過去の記事
https://zenn.dev/kentaroh/articles/729a52a3e90bca

感想

やっぱり最新のライブラリを使おうと思ったら公式のドキュメントやgithubを確認するのが一番ですが、サンプルなどで記載されてなかったら試すしかないですね!。アップデートが激しい時代、この記事もどんどんライブラリの新しいバージョンが出て廃れていくと思いますが、だからこそせっかくなので今共有させてもらおうと思いました。もし参考になったと思っていただいたら、ぜひアプリの方使ったいただけると幸いです。見ていただきありがとうございました。


次回予告

マテリアルデザイン3対応とか?FlexColorSchemeとかその辺りやってるので記事にするかもです。

Discussion