隐私快讯 | 一文搞定 App Store 春季新要求
HomepageBlog
隐私快讯 | 一文搞定 App Store 春季新要求

隐私快讯 | 一文搞定 App Store 春季新要求

Kaamel Lab
Kaamel Lab

要求简介

从 2023 年秋季开始,如果 App 开发者将新的或者更新的 App 上传到 App Store Connect,该 App 使用了 required reason APIs 但未在隐私清单中声明使用原因,苹果会向 App 开发者发送一封电子邮件进行提醒。
从 2024 年 5 月 1 日开始,App Store Connect 将不再接受未在隐私清单中描述对 required reason APIs 的使用的 App。如果 App 开发者增加一个 commonly used third-party SDKs 中的 SDK,这些 API、隐私清单和签名要求同样适用。App 应确保使用包含隐私清单的 SDK 版本,并注意当 SDK 作为二进制依赖项被添加时还需要签名。
在详细了解如何满足苹果的春季新要求前,让我们首先熟悉本次要求中提及的一些概念:

隐私清单文件是什么?

为了提高透明度和确保用户享受控制权,苹果推出了新的工具,让 App 开发者更轻松地提供准确的隐私标签,并实现与 App 跟踪透明度的集成。根据 App Store 审核指南,App 开发者需要对 App 中所有的代码负责,包括任何数据收集以及跟踪行为,App 的大部分隐私情况往往很大程度上取决于第三方 SDK,根据开发者的反馈,从 App 所依赖的大型第三方 SDK 获取所需的信息极为困难,隐私清单是第三方 SDK 开发者用来提供有关隐私保护操作信息的全新方式,此类信息可以帮助 App 开发者准确描述 App 的隐私。
“隐私清单文件”(Privacy manifest file)是一个属性列表,记录 App 或第三方 SDK 收集的数据类型,每种数据类型的使用方式,数据是否与用户关联,数据是否会按照 App 跟踪透明度政策的定义用于跟踪,以及记录 App 或第三方 SDK 使用 required reasons API 的情况。App 开发者需要确保隐私清单与对第三方 SDK 功能的理解完全相符。
notion image

隐私报告是什么?

除了推出隐私清单,苹果推出的隐私报告还对这些信息进行了总结。
App 开发者可以使用 Xcode 创建“隐私报告”(privacy report),Xcode 通过汇总 App 以及 App 接入的第三方 SDK 的隐私清单来创建一份总结了声明数据用途的隐私报告。隐私报告是一份 PDF,其组织方式与隐私标签类似,因此 App 开发者向苹果 App Store Connect 提供 App 隐私保护的详细说明时,可以轻松参考该报告。这有助于 App 开发者审查、了解并描述 App 它依赖项的隐私保护操作。下图为苹果展示的隐私报告示例:
notion image

“required reasons API” 是什么?

App 用于交付其核心功能的一些API——在 App 编写的代码中或包含在第三方SDK 中——有可能被滥用来访问设备信号,以尝试识别设备或用户,也称为指纹。无论用户是否授予 App 跟踪权限,指纹识别始终被禁止。在苹果平台上有一些 API 可能被滥用于指纹识别,但是,如果使用得当,这些 API 也可以带来强大的用户体验,为了支持有益于用户的重要功能,同时避免使用指纹识别,苹果引入了一类新的 API 即 required reason APIs。
苹果根据这些 API 的功能及其所提供的信息,将其分为不同的类别,在《描述 required reasons API 的使用》中列出了五类 API:文件时间戳 API、系统启动时间 API、磁盘空间 API、活动键盘 API、用户默认 API 。针对每个类别,苹果都基于其功能,提出了一份访问 required reason API 的批准原因列表。如果在 App 或者第三方 SDK 的代码中使用 required reasons API,那么 App 或者第三方 SDK 的开发者需要在各自的隐私清单文件中报告该 API 的类别以及使用 API 的所有原因,并且这些原因必须选自该类别的批准原因列表,并检查 App 或第三方 SDK 仅出于预期原因使用这些 API。
苹果将不断审查 required reasons API 的类型和批准原因的列表,并公布在官网中。如果开发者的 App 使用 required reasons API 为使用 App 的用户提供福利,但是批准原因未在列表中,开发者可以提交新批准原因的请求

“commonly used third-party SDKs” 是什么?

在 App 生态系统中,苹果确定了一些会对用户隐私产生重大影响的第三方 SDK,这些被称为“影响隐私的 SDK”(privacy-impacting SDKs),也即 commonly used third-party SDKs,这些第三方 SDK 列表及其未来更新都会发布在 Apple Developer 文档中。
苹果在《即将到来的第三方 SDK 要求》一文中,列出了 App store 中 App 常用的 SDK(commonly used third-party SDKs),如下图所示:
notion image

App 和 SDK 开发者分别需要做什么?

App 开发者

1.在隐私清单中报告 required reason API

App 开发者对于 App 或第三方 SDK 使用的每个 required reason API 类别,需要将字典添加到 App 或者第三方 SDK 的隐私清单中的 NSPrivacyAccessedAPITypes 数组中,在隐私清单中报告 App 使用 API 类别的原因:
  • 如果 App 开发者在 App 的代码中使用 API,那么开发者需要在 App 的隐私清单中报告该 API;
  • 如果 App 开发者在第三方 SDK 的代码中使用 API,那么需要在第三方 SDK 的隐私清单中报告该 API。
苹果特别强调,App 的第三方 SDK 不能依赖接入它的 App 的隐私清单,或 App 接入的其他第三方 SDK 的隐私清单,来报告该第三方 SDK 对 required reason API 的使用。即如果第三方 SDK 使用了 required reason API,必须在该第三方 SDK 自身的隐私清单中报告该情况。
违反该条报告义务的后果,如前文所述,从 2024 年 5 月 1 日开始,App Store Connect 不再接受未在隐私清单中描述对 required reason API 的使用的 App。
苹果对于违反报告 required reason API 后果的明确规定,我们理解,从 2024 年 5 月 1 日起,苹果会把新的 App 和更新的 App 对 required reason API 在隐私清单中的报告义务作为审核要点,必须完成此义务才能通过苹果应用市场的审核。对于 App 自身使用的 required reason API,App 可以通过梳理自身情况完成在隐私清单中的报告,对于 App 接入的第三方 SDK 使用的 required reason API,目前在实践中,App 开发者会依赖于第三方 SDK 对 SDK 使用 required reason API 情况的声明。

2.确保使用包含隐私清单的 SDK 版本

苹果在《即将到来的第三方 SDK 要求》一文中列出了“commonly used third-party SDKs”清单,从 2024 年春季开始,当 App 开发者在 App Store Connect 中提交包含清单中 SDK 的新 App 时,或者当开发者提交添加清单中的 SDK 之一作为更新的一部分更新 App 时,App 开发者必须包含清单中的任何 SDK 的隐私清单。清单中的 SDK 的任何版本,以及重新打包清单中的 SDK,都包含在要求中。
从苹果发文的用词来看,本条也为对新 App 或者更新的 App 的强制审核要求。但本条也引起了开发者的小争议,关于更新的 App,苹果的要求是“当开发者提交添加 commonly used SDKs 之一作为 App 更新的一部分更新 App时,才需要确保包含该 SDK 的隐私清单。”不少开发者提出疑问,如果 App 开发者更新 App 时,该 App 旧版本就已经包含了 commonly used SDKs 而更新时没有增加 commonly used SDKs,这个时候 App 开发者是否必须包含旧版本中 commonly used SDKs 的隐私清单呢?
虽然苹果的发文引发了一定争议,但是我们还是建议开发者以严谨的态度对待此要求。只要是 App 中使用了commonly used third-party SDKs,开发者就应在 App Store 发版前将 SDK 更新至包含隐私清单的版本。

3.创建隐私清单,描述 App 的数据使用

苹果在 WWDC23 上,并未对 App 开发者提出需要创建隐私清单的要求,但是从官网发布的《描述隐私清单中的数据使用》一文中可以看出,所有的 App 开发者都可以创建自己的隐私清单,并且 App 的隐私清单文件不需要涵盖 App 接入的第三方 SDK 收集的数据(因为第三方 SDK 收集数据的情况会在第三方 SDK 自己的隐私清单中说明)。
关于这个要求,我们理解并不会作为苹果审核新的 App 和更新的 App 的要点。当然如果 App 访问了 required reason APIs,开发者需要创建自己的隐私清单,并报告 API 的使用。但是其他情况下,创建隐私清单并不是一个强制性要求。虽然不是强制性要求,但是我们仍然建议开发者创建隐私清单,描述 App 的数据使用。通过隐私清单这一工具,开发者可以使用统一的格式更好地概述其隐私实践,从而创建更全面的隐私报告,提升应用的透明度。

4.创建隐私报告,创建更准确的隐私营养标签

隐私清单文件以单一标准格式概述了 App 自己或者 App 中第三方代码的隐私实践。当 App 开发者准备分发 App 时,Xcode 会将 App 的隐私清单和 App 使用的所有第三方 SDK 的隐私清单合并到一个易于使用的报告中。通过一份全面的报告,总结 App 中找到的所有第三方 SDK。而隐私报告的组织方式与隐私营养标签(Privacy Nutrition Labels)类似。苹果建议当 App 开发者在 App Store Connect 中提供 App 的隐私详细信息时,请务必参阅隐私报告。另外我们建议,隐私清单中填写的内容也应与产品隐私政策以及产品数据收集实践保持一致,并同步更新。

第三方 SDK 提供者

1.在隐私清单中报告 required reason API

如前所属,“如果 App 的开发者在第三方 SDK 的代码中使用 required reason API ,那么 App 的开发者需要在第三方 SDK 的隐私清单文件中报告 API”。在第三方 SDK 的隐私清单中报告该 SDK 使用 required reason API 的要求是提给 App 开发者的,但是实践中这个要求的落实会通过 App 开发者联系第三方 SDK 提供方确认的方式实现。
从 2024 年 5 月 1 日起,对于没有在隐私清单中报告 required reason API 的新 App 或更新的 App,苹果应用市场将不再接受。而第三方 SDK 对 required reason API 的使用只能在该 SDK 的隐私清单中声明。所以第三方 SDK 对 required reason API 在隐私清单中的报告要求,同样是苹果本次审核的要点。

2.创建隐私清单,描述数据使用

苹果在WWDC23 上,为“常用的第三方 SDK”(commonly used third-party SDKs) 引入了新的“隐私清单和签名”要求。App 开发者使用属于《即将到来的第三方 SDK 要求》一文“commonly used third-party SDKs”清单中的第三方 SDK 提交新的 App 或者增加它们作为更新 App 的一部分,必须确保该 SDK 包含隐私清单。根据苹果工作人员对本次春季新规的讲解,实现方式是 App 开发者向 commonly used third-party SDKs 索要隐私清单。所以我们理解,第三方 SDK 的隐私清单应由 SDK 自己创建。
如前所述,从苹果发文来看,本条为对新 App 或者更新的 App 的强制审核要求。我们建议开发者以严谨的态度对待此要求。只要属于 commonly used third-party SDKs,就应准备自己的隐私清单以供 App 开发者使用。

3.签名

Xcode 15 还支持 SDK 签名,这将有助于保护 App 以及验证第三方 SDK 的真实性。属于《即将到来的第三方 SDK 要求》一文“commonly used third-party SDKs”清单中的第三方 SDK,且用作二进制依赖项的情况下,包含这些 SDK 的 App 还必须保证该 SDK 已签名。
notion image
注意:除了在隐私清单中报告访问 required reason API 是适用所有第三方 SDK 的要求,对于创建隐私清单和签名的要求,在苹果本次新规中仅强制适用于 commonly used third-party SDKs。但如同苹果的工作人员提到的一样,包含隐私清单和签名是第三方 SDK 的最佳实践,为了提升处理数据的透明度、保护 App 以及验证第三方 SDK 的真实性,我们建议所有的第三方 SDK 都创建自己的隐私清单和签名。

如何创建隐私清单和隐私报告?

创建隐私清单

在 Xcode 中将隐私清单添加到 App 或第三方SDK中,按照以下步骤操作:
  • 选择文件>新文件。
  • 向下滚动到资源部分,然后选择 App 隐私文件类型。
  • 单击下一步。
  • 在目标列表中检查 App 或第三方 SDK 的目标。
  • 点击创建。
默认情况下,该文件名为 PrivacyInfo.xcprivacy;这是捆绑隐私清单所需的文件名。
notion image

创建隐私报告

通过执行以下操作,为 App 创建隐私报告:
1.在 Xcode 中打开项目。
2.选择产品>存档。Xcode 创建存档并在组织者中显示它。
3.按住 Control 键单击组织者中的存档,然后选择生成隐私报告。
4.选择一个位置来保存隐私报告。
5.切换到 Finder。
6.导航到保存隐私报告的位置,然后双击以在预览中打开报告。
notion image

如何描述隐私清单中的数据使用?

描述 App 或第三方 SDK 收集的数据

对于 App 或第三方 SDK 收集的每种数据的类型,在隐私清单文件中的 NSPrivacyCollectedDataTypes 数组中增加一个字典,将以下关键值增加进字典中。
苹果对字典中的关键值作出了格式要求和定义,分别为:
  • NSPrivacyCollectedDataType:收集的数据类型;
  • NSPrivacyCollectedDataTypeLinked:是否将此类数据关联到用户的身份;
  • NSPrivacyCollectedDataTypeTracking:是否使用此类数据进行追踪用户;
  • NSPrivacyCollectedDataTypePurposes:收集数据的目的。
苹果对 NSPrivacyCollectedDataType 和 NSPrivacyCollectedDataTypePurposes 明确了可选择的范围列表,如果 App 或者第三方 SDK 的开发者自定义这两项的值,Xcode 将无法正确生成隐私报告。即针对前述两项,开发者只能在苹果列出的可选择的范围列表中,选择与自身 App 或者第三方 SDK 匹配的值,否则无法生成正确的隐私报告。

可选择的 NSPrivacyCollectedDataType 范围

notion image
可选择的 NSPrivacyCollectedDataTypePurposes 范围
notion image
下图为苹果展示的隐私清单内容示例,从下图中可以看出,开发者在填写隐私清单内容时,应以收集的数据类型为维度:列明收集的数据类型,该数据是否关联到用户,是否会使用该数据追踪客户,收集该数据的目的。收集数据的目的存在多个时,需要全部列出。
notion image

如何描述隐私清单中 required reasons API 的使用?

notion image
如果在 App 或者 第三方 SDK 的代码中使用 required reasons API,那么 App 或者第三方 SDK 的开发者需要在各自的隐私清单文件中报告该 API,如上图声明 API 类别以及使用 API 的所有原因,并且这些原因必须选自该类别的批准原因列表,类别和批准原因见下表格。如前所述,如果开发者使用 required reasons API 为使用 App 的用户提供业务功能,但是批准原因未在列表中,开发者可以提交新批准原因的请求。
隐私清单中的报告内容需准确反映对这些 API 的使用及其使用所产生的数据。开发者只能出于声明的原因使用这些 API 以及从使用它们中获得的数据。这些声明的原因必须与向用户展示的 App 功能一致,并且不得使用 API 或 API 派生数据进行跟踪用户。
notion image

Kaamel 的应对

Kaamel 始终站在隐私保护的前沿,我们坚信通过技术驱动的方式帮助企业识别和解决隐私合规风险。
创新的 Kaamel AI 检测引擎 依托主流法规和监管判例,可以帮助企业快速、全面识别自身的隐私合规风险。Kaamel 也为企业提供全方位的隐私合规解决方案。助力企业在出海业务经营中更加有效地应对监管和用户需求,减轻隐私风险与合规隐患,在国际化市场建立隐私信任。