経緯
AdMobとFirebase あたりから読み進めたので整理。
AdMobについて
さまざまなフォーマットオプションで広告を表示することができる。- バナー
- インタースティシャル
- ネイティブ
- リワード
広告を表示するためには、Google Mobile Ads SDK を統合するための AdMob 登録アプリが必要。要はアプリをAdMobに登録してねってことかな。
実装の流れ
- Firebaseにアプリを登録
- AdMobアカウントを作成
- アプリを登録
- ユーザに関する指標を有効にする
- AdMobアプリをFirebaseにリンクする
- プロジェクト依存関係の更新
- Google Mobile Ads SDK を追加
- 広告の実装
まあ、これといって難しそうなところはなさそう。
Androidスタートガイド
AdMobアカウントでアプリを設定する
- アカウントを作成
- アプリを登録
アプリをFirebaseにリンクする
強く推奨らしい。AdMobアカウントのダッシュボードページで以下を設定する。
- ユーザに関する指標を有効化
- アプリをFirebaseにリンク
ここからは具体的な実装の話
- アプリIDをAndroidManifest.xmlに追加
- Mobile Ads SDK をbuild.gradle追加
- MobileAds.initialize()をコールし初期化 (★気になる一文あり)
- ユーザに関する指標とアナリティクスデータ
- Mobile Ads SDK で初期化するとロギングが開始されるので、ちゃんと初期化できているか確認してね。と読み取れる。
- (省略可)GoogleAnalyticsやFirebaseの機能を使用
- 色々機能を使って、ユーザの利用数(エンゲージメント)を増やしてね。と読み取れる。
- アプリに実装する広告フォーマットの選択
- アプリに合わせて実装する広告のフォーマットを選択する。
(★気になる一文あり)に以下の文言が。
広告を読み込む前になんらかの操作を行う必要がある場合は、必ず Mobile Ads SDKを初期化する前に行ってください。初期化の前に必要なアクションの例を次に示します。欧州経済領域(EEA)のユーザーから同意を得る
ヨーロッパって広告を出す前にユーザから同意を得ないといけないらしい。マジか。そういえば、どこかのサイトにアクセスするたびに「Cookie使うで?ええか?」という警告が出るようになったけど、あれってこれのせいか。スタートガイドとはいえ、こういうアナウンスをしてくれるのは優しいな。
EU ユーザーからの同意の取得
EUユーザに対しては以下のケースで同意を得る必要がある。
- Cookieやローカルストレージの利用
- 広告配信を目的とした個人データ(AdIDなど)の利用
Googleではこの義務の遂行をサポートするためのConsent SDKを提供している。(実装が楽できる!うれしい!)Googleが配信する広告は「パーソナライズされている・いない」の2種類がある。
- デフォルトは「されている」。「されていない」に変更することも可能。
- EUユーザに対してはどちらを利用するにしても同意が必要。
詳細
前提としてAdMobアカウント上で、広告技術プロバイダを選択しておく必要がある。
- build.gradleにConsent SDKを追加する
- Consent SDKを使うときは、必ず事前に同意ステータスを更新しておく。
- 同意ステータスは、ユーザが同意しているかどうか。
- 「同意ステータスを更新する」は「同意ステータスを把握する」と読み取れる。
- SDKに同意ステータスのアップデートをリクエストするAPIがあって、アプリを起動するときにそれをコールする。
- ユーザが同意した後に、広告技術プロバイダが変わると、同意ステータスが取得できていない状態(不明ステータス)になる。
メディエーションを利用しない場合・する場合について
よくわからないメディエーションなるキーワードが出てきた。このへんによると、第三者広告ネットワーク?を使って収益向上を図る仕組みらしい。今度は第三者広告ネットワークが何者か分からないけど、このへんによると「収益性が良さげな広告を選んでくれる広告マネージャー」のことを指しているように見える。
- 収益性が良さげな広告選んでくれるならええやん!ってなりそう
メディエーションを利用しない場合
Consent SDKで同意を得る実装方針は2つ
- Google提供の同意フォームを掲示する
- このフォームには開発者が選択した広告技術プロバイダのリストが表示される
- すべての広告技術プロバイダのリストをAdMobから動的に取得し、開発者自身がそれらをユーザに掲示するための実装を行う。
- こだわりがある人はこちら、という印象。
- ユーザが回答したら、その回答情報をSDKに保存するように指示できる
- これが完了したらGoogle Mobile Ads SDKに回答(同意)を送信できるようになる。
- パーソナライズされていない広告に限って同意した場合は、それをGoogle Mobile Ads SDKで送信する必要がある。
- 結局どちらの広告であってもSDKに送信が必要と読み取れる。
AdMobメディエーションを利用する場合
すべての広告技術プロバイダのリストをAdMobから動的に取得し、開発者自身がそれらをユーザに掲示するための実装を行う必要がある。Googleではメディエーションネットワークに関する同意の取得も処理もできない。
- ただし一部のメディエーションネットワークに対する同意の転送方法についてのドキュメントは公開されているとのこと。
- 何にせよ、便利なSDKがないならあまりやりたくない。
同意ステータスの更新
アプリ起動時に毎回実施する必要があるとのこと。具体的な同意ステータスの更新処理の実装方法は以下の通り。
同意の取得
Google提供の同意フォームの実装方法。以下のオプションを組み合わせてユーザに掲示できる。
- パーソナライズ広告表示に同意
- パーソナライズされていない広告表示に同意
- 広告表示しない有料版を利用
同意テキストを更新する場合はconsentform.htmlの内容を変更する。
- ConsentFormオブジェクトを使って同意フォームを表示する。
- プライバシーポリシーが必要!!
- 同意を取得したら、同意の保存し情報を送信する。
同意の変更や取り消し
過去の同意を変更したり、取り消すことができる必要がある。
同意年齢に満たないユーザ
すべての広告リクエストにTFUAを設定する必要がある。
- どうやって検知するんだろう。。。
テスト
EU内外の両方でアプリを簡単にテストできるように、Consent SDKにはデバッグオプションが用意されている。
Google Mobile Ads SDK に同意の転送
パーソナライズされていない広告を同意したケースの転送実装
所感
- AdMobメディエーションを利用すると色々大変そう。とりあえず利用しない方針で問題なさそう。
- プライバシーポリシーのページを用意する必要がある。
- 同意を変更する導線が必要。