ラベル Admob の投稿を表示しています。 すべての投稿を表示
ラベル Admob の投稿を表示しています。 すべての投稿を表示

2025年4月5日土曜日

Android Admobのためのライブラリ UMPの実装方法を解説

どうも。どっことです。今回はAdmobを利用するためのUMP(UserMessagingPlatform)ライブラリについて解説します。

UMPライブラリ

Androidアプリ内に広告を表示するためには、Admobライブラリを使って広告表示用のViewを組み込む必要がありますが、それと合わせてユーザに許諾を得る処理も必要です。

今回はユーザに許諾を得るためのUMP(UserMessagingPlatform)ライブラリの使い方について解説します。

実装概要

実装の手順は以下の通りです。

  1. app/build.gradledependenciesに依存関係を追加
  2. AndroidManifest.xmlmeta-dataを追加
  3. ユーザから許諾を得る処理を実装

順番に解説していきます。

依存関係の追加

app/build.gradledependenciesに依存関係を追加します。

dependencies { 
    ... 
    // 既存のdependenciesスコープに以下を追加
    implementation("com.google.android.ump:user-messaging-platform:2.0.0")
}

meta-dataの追加

AndroidManifest.xmlmeta-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.getConsentInformationconsentInformationを取得します。

取得した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による広告表示処理と合わせてユーザに同意を得る処理も必要不可欠ですので、参考にしていただけると幸いです。

参考

2021年5月10日月曜日

Android AdMob、FirebaseとEUユーザからの同意の取得について

経緯

AdMobとFirebase あたりから読み進めたので整理。

AdMobについて

さまざまなフォーマットオプションで広告を表示することができる。
  • バナー
  • インタースティシャル
  • ネイティブ
  • リワード

広告を表示するためには、Google Mobile Ads SDK を統合するための AdMob 登録アプリが必要。要はアプリをAdMobに登録してねってことかな。

    実装の流れ

    1. Firebaseにアプリを登録
    2. AdMobアカウントを作成
      1. アプリを登録
      2. ユーザに関する指標を有効にする
      3. AdMobアプリをFirebaseにリンクする
    3. プロジェクト依存関係の更新
      1. Google Mobile Ads SDK を追加
    4. 広告の実装

    まあ、これといって難しそうなところはなさそう。

    Androidスタートガイド

    AdMobアカウントでアプリを設定する

    1. アカウントを作成
    2. アプリを登録

    アプリをFirebaseにリンクする

    強く推奨らしい。AdMobアカウントのダッシュボードページで以下を設定する。

    1. ユーザに関する指標を有効化
    2. アプリをFirebaseにリンク

    ここからは具体的な実装の話

    1. アプリIDをAndroidManifest.xmlに追加
    2. Mobile Ads SDK をbuild.gradle追加
      1. MobileAds.initialize()をコールし初期化 (★気になる一文あり)
    3. ユーザに関する指標とアナリティクスデータ
      1. Mobile Ads SDK で初期化するとロギングが開始されるので、ちゃんと初期化できているか確認してね。と読み取れる。
    4. (省略可)GoogleAnalyticsやFirebaseの機能を使用
      1. 色々機能を使って、ユーザの利用数(エンゲージメント)を増やしてね。と読み取れる。
    5. アプリに実装する広告フォーマットの選択
      1. アプリに合わせて実装する広告のフォーマットを選択する。

      (★気になる一文あり)に以下の文言が。

      広告を読み込む前になんらかの操作を行う必要がある場合は、必ず 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メディエーションを利用すると色々大変そう。とりあえず利用しない方針で問題なさそう。
      • プライバシーポリシーのページを用意する必要がある。
      • 同意を変更する導線が必要。

      移行予定

      どうも。どっことです。 タイトルの通りですが、諸事情により GitHubPage に移行予定です。 https://mkt120.github.io/ この備忘録に記載の内容を転記しつつ、今後はこちらのページを更新していく予定です。