どうも。どっことです。今回はAdmobを利用するためのUMP(UserMessagingPlatform
)ライブラリについて解説します。
UMPライブラリ
Androidアプリ内に広告を表示するためには、Admobライブラリを使って広告表示用のViewを組み込む必要がありますが、それと合わせてユーザに許諾を得る処理も必要です。
今回はユーザに許諾を得るためのUMP(UserMessagingPlatform
)ライブラリの使い方について解説します。
実装概要
実装の手順は以下の通りです。
-
app/build.gradle
のdependencies
に依存関係を追加 AndroidManifest.xml
にmeta-data
を追加- ユーザから許諾を得る処理を実装
順番に解説していきます。
依存関係の追加
app/build.gradle
のdependencies
に依存関係を追加します。
dependencies {
...
// 既存のdependenciesスコープに以下を追加
implementation("com.google.android.ump:user-messaging-platform:2.0.0")
}
meta-dataの追加
AndroidManifest.xml
にmeta-data
を追加します。value
に設定する値はAdmobのページから取得してください。
<!--Sample app ID: ca-app-pub-3940256099942544~3347511713-->
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
ユーザから許諾を得る処理を実装
ここからは広告を表示するにあたってユーザから許諾を得るための処理を実装します。
同意情報のオブジェクトを取得し更新する
UserMessagingPlatform.getConsentInformation
でconsentInformation
を取得します。
取得したconsentInformation
に対して同意情報を更新します。その後、処理終了が非同期に通知されます。
val params = ConsentRequestParameters.Builder()
.setTagForUnderAgeOfConsent(false)
.build()
val consentInformation = UserMessagingPlatform.getConsentInformation(activity)
consentInformation.requestConsentInfoUpdate(activity, params, {
// 処理終了。後述。
}, { error ->
// Handle the error.
})
表示が必要なフォーム(許諾情報)があるかチェックし、更新する
処理終了の通知を受けてフォームの利用可否をチェックし、可能であればフォーム更新処理に進みます。
val params = ConsentRequestParameters.Builder()
.setTagForUnderAgeOfConsent(false)
.build()
val consentInformation = UserMessagingPlatform.getConsentInformation(activity)
consentInformation.requestConsentInfoUpdate(activity, params, {
// 処理終了。
if (consentInformation.isConsentFormAvailable) {
// 同意フォーム利用可能。
// 更新処理へ。後述。
loadForm(activity, consentInformation)
} else {
// 同意フォーム利用不可。
// 設定、フォーム更新中など。
// 再更新を促すのが無難。
}
}, { error ->
// Handle the error.
})
同意フォームを更新し、同意フォームを表示、ユーザに許諾を得る
UserMessagingPlatform.loadConsentForm
で同意フォームを更新します。これはメインスレッドで実施するよう、サンプルにコメントされています。
更新処理が終了すると非同期に通知されるので、それを契機に許諾状態を確認しましょう。その結果、未許諾(REQUIRED
)であればフォームオブジェクトに表示を依頼します。これにより、ユーザに同意フォームが表示されるはずです。
ユーザ操作を契機にフォームが非表示になったことがアプリに通知されますので、これを契機に許諾状態を再度取得してください。これでユーザに許諾してもらえていれば、晴れてアプリ内で広告表示可能という状態になります。
private fun loadForm(consentInformation: ConsentInformation) {
// Loads a consent form. Must be called on the main thread.
UserMessagingPlatform.loadConsentForm(activity, { consentForm ->
if (consentInformation.consentStatus == ConsentInformation.ConsentStatus.REQUIRED) {
// 同意フォームを表示しユーザに許諾を得る。
consentForm.show(activity) {
if (consentInformation.consentStatus == ConsentInformation.ConsentStatus.OBTAINED) {
// 無事にユーザから許諾を得られた!
} else {
// 同意を得られなかった...
// 同意をもらえなかったことによる制御へ
}
}
}
}, { error ->
// Handle the error.
})
}
まとめ
今回はAdmobを利用するための UMPライブラリについて解説しました。広告をアプリ内に組み込むためにはAdmobによる広告表示処理と合わせてユーザに同意を得る処理も必要不可欠ですので、参考にしていただけると幸いです。