TOP(About this memo)) > Google AdMob
公式
- 公式のドキュメントはiOS, Android, Unity, C++, Flutterのそれぞれの別のURL体系でドキュメントが用意されている。
- C++は2024 年 6 月 17 日をもってサポートが終了
- iOS
- Android
- Flutter
はじめる
- AdMobのサイトからログイン(電話番号確認が必要)
- 支払い情報を登録する
- 審査が行われる
アプリを登録する
- AdMobの管理画面上で登録を行う。
- 登録して発行されたApp IDは後述のInfo.plistへ設定する必要がある
- Storeへリリース前でも登録可能。
テスト広告・テストデバイスの設定
- デモ広告(テスト広告、サンプル広告とも呼ばれている)
- 理由は分からないが、それぞれのドキュメントで指定される広告IDが異なっている。
- Android
- iOS
- Flutter
- テストデバイスの登録
(任意)AdMobを Firebaseにリンクする
Info.plistの設定
コードの実装
- (参考)バナー広告の種類
- ※ 以降のリンクはFlutter用のドキュメントのリンク
- 固定サイズ・カスタムサイズ
- アダプティブ
- https://developers.google.com/admob/flutter/banner/anchored-adaptive
アダプティブバナーは、業界標準の320x50バナーサイズと、それを置き換えるスマートバナーフォーマットの両方をドロップインで置き換えることができるように設計されています。
これらのバナーサイズは、通常、画面の上部または下部に固定されるアンカーバナーとして一般的に使用されます。
このようなアンカーバナーの場合、アダプティブバナーを使用する際のアスペクト比は、以下の3つの例で見ることができるように、標準の320x50広告と同様になります:(以下画像の例が記載)
アダプティブ バナーは、利用可能な画面サイズをより有効に活用します。さらに、スマート バナーと比較すると、アダプティブ バナーは次の理由からより優れた選択肢となります。
- 幅を全画面に強制するのではなく、指定した任意の幅を使用するため、iOS の安全領域を考慮し、Android で切り抜きを表示できます。
- さまざまなサイズのデバイス間で高さを一定にするのではなく、特定のデバイスに最適な高さを選択し、デバイスの断片化の影響を軽減します。
- 固定サイズではなく、指定された幅に合わせて最適化された広告の高さでバナーのサイズを決定
- アスペクト比が元の広告と同じとなる。
- アンカーアダプティブバナー
- https://developers.google.com/admob/flutter/banner/anchored-adaptive#when_to_use_adaptive_banners
- アンカー付きアダプティブバナー
- アンカーバナーの高さは、デバイスの高さの15%または90DP(density independent pixels)のいずれか小さい方より大きくなることはなく、50DPより小さくなることはない。
- 特定のデバイス上の特定の幅に対して返されるサイズは常に同じ事が保証される。
- 「アンカー」ではあるものの、(すくなくともFlutterのSDKでは)バナー自体がアンカー機能を有してはおらず、固定されるかどうかはその実装に依存する。
ListView(
children: [
if (_anchoredAdaptiveAd != null && _isLoaded)
Container(
color: Colors.green,
width: _anchoredAdaptiveAd!.size.width.toDouble(),
height: _anchoredAdaptiveAd!.size.height.toDouble(),
child: AdWidget(ad: _anchoredAdaptiveAd!),
),
...(List.generate(100, (i) => Text("$i")).toList())
],
)
Stack(
alignment: AlignmentDirectional.bottomCenter,
children: <Widget>[
ListView(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
children: [...(List.generate(100, (i) => Text("$i")).toList())],
),
if (_anchoredAdaptiveAd != null && _isLoaded)
Container(
color: Colors.green,
width: _anchoredAdaptiveAd!.size.width.toDouble(),
height: _anchoredAdaptiveAd!.size.height.toDouble(),
child: AdWidget(ad: _anchoredAdaptiveAd!),
),
],
)
- インラインアダプティブバナー
AdMobの禁止事項
(任意)IDFAへのアクセス許可
- https://support.google.com/admob/answer/9997589?hl=ja
Apple が 2020 年 6 月に発表した更新に伴い、アプリが Apple の広告配信用の識別子(IDFA)にアクセスする際はユーザーに許可を求めることが必須となりました。これには、App Tracking Transparency(ATT)フレームワークと呼ばれるプロンプトを利用します。
- ユーザーがIDFAへのアクセスを許可しない場合は、広告の単価が低下する。
- また、テストデバイスはIDFAでGoogleが認識するため、ATTが許可されていない場合はテストデバイスを登録しても実際には機能しない。
app-ads.txtの配置
- https://support.google.com/admob/answer/9363762?hl=ja#step1
- iOSアプリは、app-ads.txtというテキストファイルをApp Store申請時のマーケティングURLのルートに配置する必要がある。
- App Store申請時にはこのマーケティングURLに忘れずに設定しておく必要がある。
- 設定していない場合は、設定時に再申請(新しいビルド)が必要となる点に注意。
- AppStoreのマーケティングURLに設定しておくことで、AdMobのapp-ads.txtクローラがapp-ads.txtを検出できる。
- クロール・検証が完了するまで待つ必要がある。
AdMobがapp-ads.txtファイルをクロールして検証するまで、最大 24 時間かかることがあります。AdMob では定期的に最新のファイルを確認しますが、早めの確認が必要な場合には AdMob にアプリのクロールをリクエストすることもできます。
(AppStoreへ公開後)対象のアプリにストア情報を設定する
- AppStoreへ公開後、AdMobへストア情報を登録する必要がある。
- ストア情報が登録されていない場合は、テスト端末以外は広告のロードが失敗する点に注意。
- このため広告を含む新規アプリは、広告の審査が完了するまではロードが失敗した際の表示方法の制御は考慮しておく必要がある。
- ストアを追加
- アプリ > すべてのアプリを表示 > アプリ > 対象のアプリ > ストアを追加
- アプリの直接のURLを指定すると、すぐに確認が可能。
https://apps.apple.com/jp/app/アプリ名/idXXXXXXXXXX
といった形式のURL
- なお、
https://itunes.apple.com/jp/app/idXXXXXXXXXX?mt=8
の形式では検索ができなかった。
- インターネット上の記事では数日要するといった記事が多いが、(24/11/6時点)ではAppStoreへ公開後にすぐに登録可能だった。
- app-ads.txtのverification
- 筆者の場合、この認証で 「app-ads.txt ファイルが設定されている可能性がありますが、お客様の詳細情報が AdMob アカウントの情報と一致しません。」というエラーが発生した。
- これは当日の朝から翌日の朝まで解消せず、翌日の朝に再度verifyを行ったところ、認証に成功した。
- なぜうまくいかなかったのか?
- これについては分からない。
- app-ads.txtの内容やApp Storeの設定内容は全く変更していない。
- 関係あるかは不明だが、当日の夜に新しいバージョン(ビルド)をリリースしている。
- 審査
- 審査中は審査状況が「準備中」に切り替わる。
- 筆者はapp-ads.txtのverification完了後、1.5時間程度で完了した。
- ネットの記事では数日〜かかるといった情報もあるが、現在が早く審査されるのか、今回偶然早かったかは分からない。
- 審査が完了して広告が配信可能となると審査状況が「準備完了」となる。