GDPR IAB 支持

本指南介绍了通过 UMP SDK 支持 GDPR IAB TCF v2 消息的操作步骤。本指南应与使用入门搭配使用,后者概述了如何在您的应用中运行 UMP SDK,还介绍了一些关于设置消息的基础知识。以下指南仅适用于 GDPR IAB TCF v2 消息。

前提条件

GDPR 规定,只有 用户撤消同意 ,才能允许用户随时撤消自己的选择。如需实现可让用户撤销同意选择的方式,请参阅隐私权选项

设置 setTagForUnderAgeOfConsent (TFUA) 来指明用户是否未达到同意年龄。当 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);
  boolean hasConsentForPurposeOne = purposeOneString.equals("1");
}

Kotlin

val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)
// Example value: "1111111111"
val purposesConsents = sharedPref.getString("IABTCF_PurposeConsents", "")
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (!purposeConsents.isEmpty()) {
  val purposeOneString = purposeConsents.first()
  val hasConsentForPurposeOne = purposeOneString == "1"
}

常见问题解答

如果我不采取任何行动来满足 针对在欧洲经济区 (EEA) 和英国投放广告的意见征求管理平台要求

自 2024 年 1 月 16 日起,如果合作伙伴未采用 仅限经 Google 认证的 CMP 受限广告 将有资格针对欧洲经济区 (EEA) 和英国的流量投放。

我们将于 2024 年 1 月 16 日开始针对一小部分 EEA 和英国的流量实施这项要求,并逐步扩大范围,直到 Google 针对 EEA 和英国的所有流量实施这项要求,直到 2 月底。在 2024 年 1 月 16 日之前部署经认证的 CMP,确保您的创收不会受到影响。

如果我实施了 CMP 且用户不同意,会出现什么情况?

受限广告 如果未根据欧盟地区用户意见征求政策针对 IAB TCF 用途 1 征得用户同意,系统会投放受限广告

如需了解详情,请参阅广告投放模式

如何确认用户是否已同意?

用户意见并非由一个数据位表示,而是由 IAB TCF 规范定义的一系列用途和供应商。如需了解 Google Ads 广告个性化条件,请参阅 用户意见征求政策:个性化广告和非个性化广告

此外,Google 的 广告技术提供商 (ATP) 名单中未注册 TCF 供应商名单的广告技术平台使用了 Google 的“更多意见征求方式”技术规范 Google 会在以下位置发布未向 IAB 注册的广告技术提供商列表及其 ID:https://storage.googleapis.com/tcfac/additional-consent-providers.csv

若要调试单个广告请求,请使用广告检查器中的高级广告单元调试功能导出广告请求字符串。然后查找以下查询参数:

查询参数 含义
gdpr GDPR 是否适用于此广告请求。
gdpr_consent TC 字符串。IAB 提供了一个网页工具,您可以在其中手动解码该值。
addtl_consent Google 的“更多意见征求方式”技术规范中的 AC 字符串。 Google 的“更多意见征求方式”技术规范中的 AC 字符串。

如需以程序化方式读取用户意见选项,请参阅如何读取用户意见选项了解详情。

我需要使用 Google 的 UMP SDK 才能满足 CMP 要求吗?

不可以。您可以使用 列出经 Google 认证的 CMP

如何借助 UMP SDK 再次显示用户意见征求表单(即使用户已表示同意)?

如果用户已做出意见征求决定,在 TC 字符串过期或失效之前,Google 的意见征求管理解决方案不会请求征求新的意见。

GDPR 要求修改用户意见,以便用户随时撤销自己的选择。请参阅隐私权选项,了解如何为用户提供撤销意见征求选项的方法。如需再次显示用户意见征求表单,请调用 showPrivacyOptionsForm()

用户意见征求表单是否填充了用户之前的选择?

每次显示用户意见征求消息时,该消息都会直观地显示默认的用户意见征求选项。不过,在用户做出同意决定后,用户的意见选择会保存到本地存储空间。

我集成了经 Google 认证的 CMP,但没有看到任何向中介合作伙伴发出的广告请求,即使是已表示同意的用户也不例外。为何要做这样的改动?

根据 TCF,Google 会先检查广告技术提供商和其他程序化需求来源是否违反 Google 政策,以及是否至少有一个处理数据的法律依据,然后才会将其纳入中介广告瀑布流。如需了解详情,请前往 中介 部分。

Google 广告技术提供商 (ATP) 列表 中的部分中介合作伙伴未在 TCF 供应商列表中注册。 这些合作伙伴改用 Google 的“更多意见征求方式”技术规范 来实现用户意见征求。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)都需要就用途征得用户同意并征得供应商同意,才能投放合适的广告。

要向同一用户同时显示 iOS ATT 提醒和 GDPR 意见征求消息,最佳做法是什么?

如果用户同意了 GDPR,我们建议您先显示 GDPR 用户意见征求消息,再显示 iOS ATT 提醒。如果您在 Ad Manager 界面中配置了这两条消息,那么这已由 UMP SDK 处理。 如需了解详情,请参阅 您的用户将会看到哪一条消息

如果您未使用 UMP SDK 显示 ATT 提醒,建议您在依照 GDPR 征求用户意见后阅读用户意见征求选项,以决定是否显示 iOS ATT 提醒。

AC 字符串版本 2 对欧洲经济区 (EEA) 和英国的流量的广告瀑布流中介有何影响?

在将广告技术提供商和其他程序化需求来源纳入中介广告瀑布流之前,我们会检查并确保广告技术提供商及其他程序化需求来源未违反 Google 政策,并且至少拥有一项处理数据的法律依据。

更多意见征求方式 v2 变更 包含一项更新,以支持 CMP 中披露的供应商。已披露的供应商有资格参与中介广告瀑布流。

如何为已同意使用版本 1 的用户实现 AC 字符串版本 2?

请根据 Google 的“更多意见征求方式”技术规范 ,以确定用户是否同意使用 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"
}
如果用户在欧洲经济区 (EEA) 和英国看到了该用户意见征求表单,然后又离开了欧洲经济区 (EEA) 和英国,在这一过程中,该用户的广告投放行为会是怎样的?

即使用户离开欧洲经济区 (EEA) 和英国,Google 移动广告 SDK 也会尊重用户的意见,应用适当的广告投放模式。