根据 Google 《欧盟地区用户意见征求政策》,您必须向位于欧洲经济区 (EEA)、英国和瑞士境内的用户披露相关信息;在法律有相应要求的情况下,您必须征得他们的同意才能使用 Cookie 或其他本地存储方式;您还必须征得他们的同意才能使用其个人数据(例如广告 ID)来投放广告。
此政策反映了《欧盟电子隐私指令》和《一般数据保护条例》(GDPR) 的要求。
本指南介绍了通过 UMP SDK 支持 GDPR IAB TCF v2 消息的操作步骤。本指南应与使用 入门搭配使用,后者概述了如何在您的应用中运行 UMP SDK,还介绍了一些关于设置消息的基础知识。以下指南专门针对 GDPR IAB TCF v2 消息。如需了解详情,请参阅 IAB 要求对欧盟地区用户意见征求消息的影响。
前提条件
撤销同意
GDPR 要求用户能够随时撤销同意,因此您需要实现撤销同意功能。请参阅 隐私设置选项 ,了解如何实现让用户撤销同意选择的功能。
“未达到同意年龄”标记
如需指明用户是否未达到同意年龄,请设置
tagForUnderAgeOfConsent (TFUA)。如果您将 TFUA 设置为
true,UMP SDK 将不会向用户征求同意。如果您的应用面向的是混合受众群体,请为儿童用户设置此参数,以确保系统不会向他们征求同意。
以下示例在 UMP 意见征求请求中将 TFUA 设置为 true:
Swift
// Create a UMPRequestParameters object.
let parameters = RequestParameters()
// Indicate the user is under age of consent.
parameters.isTaggedForUnderAgeOfConsent = true
// Request an update for the consent information.
ConsentInformation.shared.requestConsentInfoUpdate(with: parameters) {
[weak self] requestConsentError in
guard let self else { return }
// ...
}
Objective-C
// Create a UMPRequestParameters object.
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
// Indicate the user is under age of consent.
parameters.tagForUnderAgeOfConsent = YES;
// Request an update for the consent information.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable requestConsentError) {
// ...
}];
中介
请按照 向已发布的 GDPR 消息添加广告合作伙伴 中所述的步骤,将您的中介合作伙伴添加到广告合作伙伴名单中。否则,可能会导致合作伙伴无法在您的应用中投放广告。
中介合作伙伴可能还有其他一些工具可帮助您遵守 GDPR。如需了解详情,请参阅具体合作伙伴的 集成 指南。
如何读取用户意见征求选择
收集 GDPR 意见征求后,您可以按照
TCF v2 规范从本地
存储空间读取意见征求选择。
IABTCF_PurposeConsents 键表示用户对每个
TCF 用途的意见。
以下代码段展示了如何检查用户对用途 1 的意见:
Swift
// Example value: "1111111111"
let purposeConsents = UserDefaults.standard.string(forKey: "IABTCF_PurposeConsents")
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
let hasConsentForPurposeOne = purposeConsents?.first == "1"
Objective-C
// Example value: "1111111111"
NSString *purposeConsents = [NSUserDefaults.standardUserDefaults
stringForKey:@"IABTCF_PurposeConsents"];
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
BOOL hasConsentForPurposeOne = [purposeConsents hasPrefix:@"1"];
常见问题解答
- 如果我不采取任何措施来满足 在欧洲经济区、英国和瑞士投放广告的意见征求管理平台要求,会怎么样?
自 2024 年 1 月 16 日起,如果合作伙伴未采用经 Google 认证的 CMP, 只有 受限广告 有资格在欧洲经济区和英国投放。
Google 将于 2024 年 1 月 16 日开始针对一小部分欧洲经济区和英国的流量实施这项要求,并在 2024 年 2 月底前逐步扩大范围,最终涵盖这两个地区的所有流量。请在 2024 年 1 月 16 日之前采用经认证的 CMP,以确保您的创收不受影响。
- 如何检查用户是否已同意?
用户意见并非由单个位表示,而是由一组用途和 供应商表示,具体由 IAB TCF 规范定义。如需了解 Google Ads 个性化广告标准,请参阅 意见征求政策:个性化广告和非个性化广告 。
此外,如果 Google 广告技术提供商 (ATP) 列表中的广告技术提供商未在 TCF 供应商列表中注册,则会使用 Google 的“额外同意模式”技术规范 来收集用户意见。Google 会在以下位置发布未向 IAB 注册的广告技术提供商列表及其 ID: https://storage.googleapis.com/tcfac/additional-consent-providers.csv。
如需调试单个广告请求,请使用广告检查器中的 “排查隐私设置问题” 功能,查看在 广告请求中传递的以下隐私信号(作为 发布商集成 IAB Europe TCF的一部分):
广告检查器标签 广告请求查询参数 含义 GDPR 适用情况 (IABTCF_gdprApplies) gdprGDPR 是否适用于此广告请求。 TC 字符串 (IABTCF_TCString) gdpr_consentTC 字符串。IAB 提供了一个 Web 工具,您可以在其中手动 解码该值。 AC 字符串 (IABTCF_AddtlConsent) addtl_consentGoogle 的“额外同意模式”技术规范中的 AC 字符串。 如需以编程方式读取用户意见征求选择,请参阅 如何读取用户意见征求选择 了解详情。
- 我是否需要使用 Google 的 UMP SDK 才能满足 CMP 要求?
不需要,您可以使用 经 Google 认证的 CMP 列表 中的任何 CMP 来投放广告。
- 即使用户已同意,我也可以使用 UMP SDK 再次显示意见征求表单吗?
如果用户已做出意见征求决定,Google 的意见征求管理解决方案将不会请求收集新的用户意见,直到 TC 字符串过期或以其他方式失效。
GDPR 要求用户能够随时修改意见征求选择,因此您需要实现修改意见征求功能。请参阅 隐私设置选项,了解如何 实现让用户撤销意见征求选择的功能。如需再次显示 意见征求表单,请调用
presentPrivacyOptionsFormFromViewController:completionHandler:。- 我集成了经 Google 认证的 CMP,但即使是已同意的用户,我也看不到向中介合作伙伴发出的任何广告请求。为什么会出现这种情况?
根据 TCF,Google 会先确认广告技术提供方及其他程序化需求来源未违反 Google 政策,且至少拥有一条处理数据的法律依据,然后才会将其纳入中介广告瀑布流。如需了解详情,请前往 中介 部分。
Google 广告技术提供商 (ATP) 列表中的一些中介合作伙伴未在 TCF 供应商列表中注册。这些合作伙伴会改用 Google 的“额外同意模式”技术规范 来收集用户意见。Google 会在以下位置发布未向 IAB 注册的广告技术提供商列表及其 ID: https://storage.googleapis.com/tcfac/additional-consent-providers.csv
UMP SDK 支持存储 ACString,让您能够 向已发布的 GDPR 消息添加广告合作伙伴 ,而无需了解合作伙伴是否已注册 TCF。使用第三方 CMP 时,您应执行以下操作:
- 确认第三方 CMP 支持存储 ACString。
- 将每个中介合作伙伴添加到第三方 CMP 用于收集用户意见的广告技术提供商列表中。
- 如果用户不同意,我可以更改应用的功能吗?政策是否允许这样做?
发布商可以在自己的应用中读取 IAB TCF 字符串。如需了解如何以程序化方式读取用户意见征求选择,请参阅 如何读取用户意见征求选择 。发布商应与法律顾问一起审核其在相关法规下的义务。
- 当我选择管理选项 并同意所有用途时,为什么看不到任何广告?为什么会出现这种情况?
除了收集用途同意之外,您还需要收集供应商同意。任何供应商(例如 Google)都必须同时获得用途同意和供应商同意,才能投放合适的广告。
- 向同一用户同时显示 iOS ATT 提醒和 GDPR 意见征求的最佳做法是什么?
如果用户同意 GDPR,我们建议您先显示 GDPR 意见征求消息,然后再显示 iOS ATT 提醒。如果您在 Ad Manager 界面中配置了这两条消息,UMP SDK 会自动处理此问题。 如需了解详情,请参阅 您的用户将看到哪一条消息 。
如果您未使用 UMP SDK 显示 ATT 提醒,我们建议您 在收集 GDPR 意见征求后读取用户意见征求选择 以确定是否显示 iOS ATT 提醒。
- 如何为已同意版本 1 的用户实现 AC 字符串版本 2?
按照 Google 的“额外同意模式”技术规范 检查本地存储空间中的
IABTCF_AddtlConsent键,以确定用户是否已同意 AC 字符串版本 2,以及您 是否需要再次显示意见征求表单。Swift
// Example value: "2~1.35.41.101~dv.9.21.81" let additionalConsent = UserDefaults.standard.string(forKey: "IABTCF_AddtlConsent") // Index 0 contains information about the specification version number. let isACVersion2 = additionalConsent?.first == "2"Objective-C
// Example value: "2~1.35.41.101~dv.9.21.81" NSString *additionalConsent = [NSUserDefaults.standardUserDefaults stringForKey:@"IABTCF_AddtlConsent"]; // Index 0 contains information about the specification version number. BOOL isACVersion2 = [additionalConsent hasPrefix:@"2"];