UMPライブラリを扱う
Androidアプリ内にAdMob広告を表示するためには、広告表示ライブラリに加えて、ユーザーからの同意(許諾) が必要で、 UMPライブラリは、この同意プロセス(GDPRやCCPAなどの規制に対応した同意フォームの表示・管理)を実装するためのライブラリ。 Googleが提供している。
実装概要
UMPライブラリを使ってユーザーからの許諾を得る処理を実装する手順は以下。
app/build.gradle
のdependencies
に依存関係を追加- **
AndroidManifest.xml
**にmeta-data
を追加 - ユーザーからの許諾を得る処理を実装
1. 依存関係の追加
app/build.gradle
ファイルを開き、dependencies
に以下の依存関係を追加する。
dependencies {
// ...
implementation("com.google.android.ump:user-messaging-platform:2.0.0")
}
2. meta-dataの追加
AndroidManifest.xml
の<application>
タグ内に、AdMobのアプリケーションIDをmeta-data
として追加する。
value
には、AdMobの管理画面から取得した値を設定すること。
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
なお、ca-app-pub-3940256099942544~3347511713
はテスト用のSample app ID。
3. ユーザーから許諾を得る処理を実装
広告を表示する前に、ユーザーから同意を得るための処理を実装する。
1. 同意情報の取得・更新
UserMessagingPlatform.getConsentInformation
で**ConsentInformation
**オブジェクトを取得する。
このオブジェクトに対してrequestConsentInfoUpdate
を呼び出し、ユーザーの同意情報を最新の状態に更新する。
val params = ConsentRequestParameters.Builder()
.setTagForUnderAgeOfConsent(false) // 18歳未満の同意対象ではないことを示すフラグ
.build()
val consentInformation = UserMessagingPlatform.getConsentInformation(activity)
consentInformation.requestConsentInfoUpdate(activity, params, {
// 処理終了(次のステップへ)
}, { error ->
// エラー処理
})
2. フォームの利用可否をチェックし、フォーム更新処理を実行
同意情報が更新されたら、consentInformation.isConsentFormAvailable
で同意フォームの表示が必要か(=フォームが利用可能か)をチェックする。
利用可能な場合は、フォーム更新処理(loadForm
)に進む。
// ... requestConsentInfoUpdateのコールバック内 ...
if (consentInformation.isConsentFormAvailable) {
// 同意フォームが利用可能
loadForm(consentInformation)
} else {
// 同意フォームが利用不可(既に同意済み、または設定・更新中など)
// 再更新を促すなどの制御を検討
}
3. 同意フォームを更新し、表示して許諾を得る
UserMessagingPlatform.loadConsentForm
で同意フォームを更新する。
この処理はメインスレッドで呼び出す必要があるため注意。
フォームの更新が完了したのち、consentStatus
を確認する。
- ステータスが**
REQUIRED
** (許諾が必要)であれば、フォームオブジェクトのshow
を呼び出してユーザーに同意フォームを表示する。 - フォームが非表示になった後、再度
consentStatus
を確認し、OBTAINED
(許諾済み)であれば、広告を表示できる。
private fun loadForm(activity: Activity, consentInformation: ConsentInformation) {
// 同意フォームの読み込み(メインスレッドで実行する必要がある)
UserMessagingPlatform.loadConsentForm(activity, { consentForm ->
// フォームが読み込まれたら、現在の同意ステータスを確認
if (consentInformation.consentStatus == ConsentInformation.ConsentStatus.REQUIRED) {
// 同意フォームを表示し、ユーザーに許諾を得る
consentForm.show(activity) {
// フォームが非表示になった後の処理
if (consentInformation.consentStatus == ConsentInformation.ConsentStatus.OBTAINED) {
// 無事にユーザーから許諾を得られた
// AdMob広告の初期化と表示処理へ進む
} else {
// 同意を得られなかった、または同意を拒否された
// 広告表示を制限するなどの対応が必要
}
}
}
}, { error ->
// エラー処理
})
}
参考
最終更新: 2025.9.28