GDPR IAB サポート

プラットフォームを選択: Android iOS Unity Flutter

お客様は Google の EU ユーザーの同意ポリシーのもとで、欧州経済領域(EEA)と英国のユーザーに対して特定の情報を開示し、Cookie などのローカル ストレージの使用に対するユーザーの同意(法律で義務付けられている場合)、および広告配信を目的とした個人データ(AdID など)の使用に対するユーザーの同意を得る必要があります。本ポリシーには、EU の e プライバシー指令と一般データ保護規則(GDPR)の要件が反映されています。

このガイドでは、UMP SDK の一部として GDPR IAB TCF v2 メッセージをサポートするために必要な手順について説明します。UMP SDK でアプリを実行する方法の概要とメッセージのセットアップの基本について説明する、スタートガイドも合わせてご参照ください。以下のガイダンスは GDPR IAB TCF v2 メッセージ専用です。詳しくは、IAB の要件が EU ユーザー向け同意メッセージに与える影響をご覧ください。

前提条件

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 仕様に沿ってローカル ストレージから同意の選択を読み取ることができます。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 と英国のトラフィックで配信できるのは制限付き広告のみとなります。

本要件は、EEA と英国で発生する一部のトラフィックに対して 2024 年 1 月 16 日に適用が開始され、同年 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 Europe TCF とのパブリッシャーの統合の一部として広告リクエストで渡される次のプライバシー シグナルを確認します。

広告インスペクタのラベル 広告リクエストのクエリ パラメータ 意味
GDPR が適用される(IABTCF_gdprApplies) gdpr この広告リクエストに GDPR が適用されるかどうか。
TC 文字列(IABTCF_TCString) gdpr_consent TC 文字列。IAB は、値を手動でデコードできるウェブツールを提供しています。
AC 文字列(IABTCF_AddtlConsent) addtl_consent Google の追加同意の技術仕様の AC 文字列。

同意の選択をプログラムで読み取る方法については、同意の選択を読み取る方法をご覧ください。

CMP の要件を満たすために Google の UMP SDK を使用する必要がありますか?

いいえ。Google 認定の CMP のリストに記載されている CMP であれば、どれでも広告の配信に使用できます。

ユーザーがすでに同意している場合でも、UMP SDK を使用して同意フォームを再度表示するにはどうすればよいですか?

ユーザーがすでに同意の決定を行っている場合、TC 文字列が期限切れになるか、無効になるまで、Google の同意管理ソリューションは新しい同意の収集をリクエストしません。

GDPR では、ユーザーがいつでも同意の選択を取り消せるように、同意の変更を義務付けています。ユーザーが同意の選択を取り消す方法を実装するには、プライバシー オプションをご覧ください。同意フォームを再度表示するには、 showPrivacyOptionsForm() を呼び出します。

Google 認定の CMP を統合しましたが、同意したユーザーからでもメディエーション パートナーへの広告リクエストが送信されません。変更の理由

TCF に基づき、Google では広告技術プロバイダおよびその他のプログラマティック デマンドソースが Google のポリシーに違反しておらず、データ処理を実施するための法的根拠を少なくとも 1 つ有しているかを確認してから、メディエーションの順次処理に追加します。詳しくは、メディエーションのセクションをご覧ください。

Google の広告技術プロバイダ(ATP)リストに登録されている一部のメディエーション パートナーは、TCF ベンダー リストに登録されていません。これらのパートナーは、同意の収集に Google の追加同意の技術仕様を使用します。IAB に未登録の広告技術プロバイダとその ID のリストは、次の場所で公開されます。 https://storage.googleapis.com/tcfac/additional-consent-providers.csv

UMP SDK は ACString の保存をサポートしているため、パートナーが TCF に登録されているかどうかを把握していなくても、公開済みの GDPR メッセージに広告パートナーを追加できます。サードパーティの CMP を使用する場合は、次のことを行う必要があります。

  1. サードパーティの CMP が ACString の保存に対応していることを確認します。
  2. 第三者 CMP が同意の収集に使用する広告技術プロバイダのリストに、各メディエーション パートナーを含めます。
ユーザーが同意しなかった場合、アプリの機能を変更できますか?これはポリシーで許可されていますか?

パブリッシャーはアプリで IAB TCF 文字列を読み取ることができます。同意の選択をプログラムで読み取る方法については、同意の選択を読み取る方法をご覧ください。パブリッシャーは、関連する規制に基づく義務について、法務顧問と確認する必要があります。

[オプションを管理] を選択してすべての目的に同意したのに、広告が表示されません。変更の理由

目的の同意に加えて、ベンダーの同意も収集する必要があります。Google などのベンダーが適切な広告を配信するには、目的の同意とベンダーの同意の両方が必要です。

バージョン 1 にすでに同意しているユーザーに対して AC 文字列のバージョン 2 を実装するにはどうすればよいですか?

Google の追加の同意に関する技術仕様に沿って、ローカル ストレージの IABTCF_AddtlConsent キーをチェックし、ユーザーが 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"
}