お客様は Google の EU ユーザーの同意 ポリシーのもとで、欧州経済領域(EEA)、 英国、スイスのユーザーに対して特定の情報を開示し、 Cookie などのローカル ストレージの使用に対するユーザーの同意(法律で義務付けられている場合)、および広告配信を目的とした個人 データ(広告 ID など)の使用に対するユーザーの同意を得る必要があります。
本ポリシーには、EU の e プライバシー指令と一般データ保護規則(GDPR)の要件が反映されています。
このガイドでは、UMP SDK の一部として GDPR IAB TCF v2 メッセージをサポートするために必要な手順について説明します。UMP SDK でアプリを実行する方法の概要とメッセージのセットアップの基本について説明する、スタートガイドも合わせてご参照ください。以下のガイダンスは GDPR IAB TCF v2 メッセージ専用です。詳しくは、 IAB の要件が EU ユーザー向け同意メッセージに与える影響についての記事をご確認ください。
前提条件
- UMP SDK を設定する。
- アプリに表示する 欧州の規制に関するメッセージを作成する。
同意の取り消し
GDPR では、ユーザーがいつでも同意の選択を取り消せるように、 同意の取り消し を許可する必要があります。ユーザーが同意の選択を取り消せるようにする方法については、 プライバシー オプション をご覧ください。
同意年齢に満たないユーザー向けのタグ
ユーザーが同意年齢に満たないかどうかを示すには、
setTagForUnderAgeOfConsent(TFUA)を設定します。TFUA を true に設定すると、UMP SDK はユーザーに同意を求めません。アプリのオーディエンスが混在している場合は、子供のユーザーに対してこのパラメータを設定し、同意が求められないようにします。
次の例では、UMP 同意リクエストで TFUA を true に設定しています。
Java
ConsentRequestParameters params = new ConsentRequestParameters
.Builder()
// Indicate the user is under age of consent.
.setTagForUnderAgeOfConsent(true)
.build();
consentInformation = UserMessagingPlatform.getConsentInformation(this);
consentInformation.requestConsentInfoUpdate(
this,
params,
(OnConsentInfoUpdateSuccessListener) () -> {
// ...
},
(OnConsentInfoUpdateFailureListener) requestConsentError -> {
// ...
});
Kotlin
val params = ConsentRequestParameters
.Builder()
// Indicate the user is under age of consent.
.setTagForUnderAgeOfConsent(true)
.build()
consentInformation = UserMessagingPlatform.getConsentInformation(this)
consentInformation.requestConsentInfoUpdate(
this,
params,
ConsentInformation.OnConsentInfoUpdateSuccessListener {
// ...
},
ConsentInformation.OnConsentInfoUpdateFailureListener {
requestConsentError ->
// ...
})
メディエーション
公開済みの GDPR メッセージに広告パートナーを追加する手順に沿って、メディエーション パートナーを広告パートナー リストに追加します。追加しない場合、パートナーがアプリに広告を配信できなくなることがあります。
メディエーション パートナーには、GDPR 遵守に役立つツールも用意されています。詳しくは、パートナーごとの統合 ガイドをご覧ください。
同意の選択を読み取る方法
GDPR 同意が収集されたら、TCF v2 仕様に沿ってローカル ストレージから同意の選択を読み取ることができます。
TCF v2 仕様。
IABTCF_PurposeConsents キーは、
TCF の各目的に対する同意を示します。
次のコード スニペットは、目的 1 の同意を確認する方法を示しています。
Java
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
// Example value: "1111111111"
String purposeConsents = sharedPref.getString("IABTCF_PurposeConsents", "");
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (!purposeConsents.isEmpty()) {
String purposeOneString = purposeConsents.charAt(0).toString();
boolean hasConsentForPurposeOne = purposeOneString.equals("1");
}
Kotlin
val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)
// Example value: "1111111111"
val purposeConsents = sharedPref.getString("IABTCF_PurposeConsents", "")
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (purposeConsents?.isEmpty() == false) {
val purposeOneString = purposeConsents.first().toString()
val hasConsentForPurposeOne = purposeOneString == "1"
}
よくある質問
- 欧州経済領域、英国、スイスで広告を配信するための 同意管理プラットフォームの要件を満たすための措置を講じなかった場合、どうなりますか?
2024 年 1 月 16 日より、パートナー様が Google 認定の CMPを導入しなかった場合、EEA と英国のトラフィックで配信できる広告は 制限付き広告 のみとなります。
2024 年 1 月 16 日に EEA と英国で発生する一部のトラフィックに対して要件の適用が開始され、同年 2 月末までには EEA と英国で発生するすべてのトラフィックに適用されます。収益受け取りへの影響を避けるため、2024 年 1 月 16 日までに必ず認定 CMP の導入をご完了ください。
- ユーザーが同意したかどうかを確認するにはどうすればよいですか?
同意は単一のビットで表されるのではなく、一連の目的と ベンダーで表されます。これは、IAB TCF 仕様で定義されています。Google 広告のパーソナライズの条件については、 同意に関するポリシー: パーソナライズド広告と非パーソナライズド広告 をご覧ください。
また、TCF ベンダー リストに登録されていない Google の 広告技術プロバイダ (ATP)リストの広告技術は、同意の収集に Google の追加同意の技術仕様 を使用します。IAB に未登録の広告技術プロバイダとその ID のリストは、https://storage.googleapis.com/tcfac/additional-consent-providers.csvで公開されます。
個別の広告リクエストをデバッグするには、広告インスペクタの プライバシー設定のトラブルシューティング 機能を使用して、 広告リクエストでパブリッシャー様による IAB ヨーロッパの TCF の統合の一環として渡される次のプライバシー シグナルを確認します。
広告インスペクタのラベル 広告リクエストのクエリ パラメータ 意味 GDPR の適用(IABTCF_gdprApplies) gdprこの広告リクエストに GDPR が適用されるかどうか。 TC 文字列(IABTCF_TCString) gdpr_consentTC 文字列。IAB は、値を手動で デコードできるウェブツールを提供しています。 AC 文字列(IABTCF_AddtlConsent) addtl_consentGoogle の追加同意の技術仕様の AC 文字列。 同意の選択をプログラムで読み取る方法について詳しくは、 同意の選択を読み取る方法 をご覧ください。
- CMP の要件を満たすには、Google の UMP SDK を使用する必要がありますか?
いいえ。広告を配信するには、 Google 認定の CMP のリスト にある任意の CMP を使用できます。
- ユーザーがすでに同意している場合でも、UMP SDK を使用して同意フォームを再度表示するにはどうすればよいですか?
ユーザーがすでに同意の決定を行っている場合、TC 文字列の有効期限が切れるか、無効になるまで、Google の同意管理ソリューションは新しい同意を求めるリクエストを送信しません。
GDPR では、ユーザーがいつでも同意の選択を取り消せるように、同意の変更を許可する必要があります。ユーザーが同意の選択を取り消せるようにする方法については、 プライバシー オプションをご覧ください。同意フォームを再度表示するには、
showPrivacyOptionsForm()を呼び出します。- Google 認定の CMP を統合しましたが、同意したユーザーからでも、メディエーション パートナーへの広告リクエストが送信されません。なぜでしょうか?
TCF では、広告技術プロバイダおよびその他のプログラマティック デマンドソースが Google のポリシーに違反しておらず、データ処理を実施するための法的根拠を少なくとも 1 つ有しているかを確認してから、メディエーションの順次処理に追加します。詳しくは、 メディエーション のセクションをご覧ください。
Google の広告技術プロバイダ(ATP)リストに掲載されているメディエーション パートナーの一部は、TCF ベンダー リストに登録されていません。これらのパートナーは、同意の収集に Google の追加同意の技術仕様 を使用します。IAB に未登録の広告技術プロバイダとその ID のリストは、 次の場所で公開されます: https://storage.googleapis.com/tcfac/additional-consent-providers.csv
UMP SDK は ACString の保存をサポートしているため、パートナーが TCF に登録されているかどうかを把握していなくても、公開済みの GDPR メッセージに 広告パートナーを追加 できます。サードパーティの CMP を使用する場合は、次のことを行う必要があります。
- サードパーティの CMP が ACString の保存をサポートしていることを確認します。
- サードパーティの CMP が同意の収集に使用する広告技術プロバイダのリストに、各メディエーション パートナーを含めます。
- ユーザーが同意しない場合、アプリの機能を変更できますか?これはポリシーで許可されていますか?
パブリッシャー様は、アプリで IAB TCF 文字列を読み取ることができます。同意の選択をプログラムで読み取る方法については、 同意の選択を読み取る方法 をご覧ください。パブリッシャー様は、関連する規制に基づく義務について、法務担当者と確認する必要があります。
- [オプションを管理] を選択してすべての目的に同意しても、広告が表示されません。なぜでしょうか?
目的の同意を収集するだけでなく、ベンダーの同意も収集する必要があります。Google などのベンダーが適切な広告を配信するには、目的の同意とベンダーの同意の両方が必要です。
- バージョン 1 にすでに同意しているユーザーに対して、AC 文字列バージョン 2 を実装するにはどうすればよいですか?
-
Java
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context); // Example value: "2~1.35.41.101~dv.9.21.81" String additionalConsent = sharedPref.getString("IABTCF_AddtlConsent", ""); // Index 0 contains information about the specification version number. if (!additionalConsent.isEmpty()) { String specACVersion = additionalConsent.charAt(0); boolean isACVersion2 = purposeOneString.equals("2"); }Kotlin
val sharedPref = PreferenceManager.getDefaultSharedPreferences(context) // Example value: "2~1.35.41.101~dv.9.21.81" val additionalConsent = sharedPref.getString("IABTCF_AddtlConsent", "") // Index 0 contains information about the specification version number. if (!additionalConsent.isEmpty()) { val specACVersion = additionalConsent.first() val isACVersion2 = specACVersion == "2" }