Privacy Nutrition Label 是 App Store 中的隐私标签,向用户展示应用程序收集哪些数据以及用于什么目的。Apple 要求每个应用程序在发布或更新之前都必须填写标签。根据 Apple App Privacy Details,隐私标签涵盖 14 个数据类别和 5 个收集目的,从分析到内容个性化。
要点
Privacy Nutrition Label 是 App Store 中应用程序页面上的一个视觉块,显示数据收集摘要。Apple 于 2020 年 12 月推出了这些标签,类似于产品上的 营养价值:用户看到的是应用程序收集了哪些数据以及如何使用它们,而不是卡路里和脂肪。
标签由两部分组成:“用于跟踪的数据”和“与用户相关的数据”。第一部分显示传递给第三方用于跟踪的数据。第二部分 — 应用程序收集并与用户帐户或设备关联的所有数据。
每个数据元素都用颜色标记:黄色(数据与用户相关)或绿色(数据与用户无关)。黄色标签越多,用户就越关注收集了哪些数据。根据 Adjust (2024) 的数据,拥有 8 个以上黄色标签的应用程序安装转化率低 22%。
标签的填写在 App Store Connect 中通过 Web 界面完成。开发者回答问题:应用程序是否收集特定类型的数据,是否与用户相关以及用于什么目的。Apple 不通过程序检查标签的 真实性,但声明与实际行为不符可能导致拒绝。
Apple 在 WWDC 2020 上随 iOS 14 一起宣布了这些标签。最初它们是更广泛的隐私计划的一部分,包括 ATT 和 Privacy Manife。从 2020 年 12 月 8 日起,填写标签成为 所有 应用程序和更新的强制要求。
这些标签是 Apple 对监管机构和用户对数据收集日益关注的回应。与需要正式同意的 GDPR 和 CCPA 不同,Apple 强调透明度:用户在安装应用程序之前就能立即看到收集了哪些数据。
2022 年,Apple 为标签添加了 交互性:用户可以单击每个类别并查看数据用于什么目的。2024 年,Apple 开始要求标签与二进制文件内 Privacy Manife 中声明的数据一致。
Google 于 2022 年 4 月在 Google Play 中引入了类似的“数据安全”(Data Safety)部分。主要区别:Google 通过自动代码扫描 检查 标签,并可以要求开发者确认,而 Apple 依赖开发者的声明,在审核时进行检查。
此外,Google Play 要求提及安全措施(静态和传输中的数据加密,符合安全计划)。Apple 不要求这些信息,但通过强制性功能(如 ATS(App Transport Security))检查要求的符合性。
Apple 不分析应用程序代码来填写标签 — 开发者独立声明收集的数据。然而在 2024 年,Apple 开始将标签与二进制文件内的 Privacy Manife 进行比较,这使过程更加正式。
开发者进入 App Store Connect → 选择应用程序 → “应用隐私”部分 → “隐私标签”。打开一个问卷,包含关于 14 个数据类别中每一个的问题。对于每个类别,需要说明:是否收集此类型的数据,是否与用户关联(linked),以及用于什么目的。
收集目的包括:第三方广告、开发者分析、产品开发(Product Personalization)、内容个性化、应用程序功能执行(App Functionality)。一个数据类别可以用于多个目的。重要提示:如果数据传递给第三方,必须标记为跟踪。
保存更改后,Apple 会生成新版本的标签,并在 24 小时内显示在 App Store 中。提交新版本时,标签会自动检查:如果未填写,提交按钮将被阻止。Apple Developer (2024) 建议在数据收集逻辑每次更改时更新标签。
直到 2024 年,标签完全是自我报告的 — Apple 信任开发者的回答。随着 Privacy Manife 的出现以及标签与清单的集成,Apple 开始了 自动比较。例如,如果清单声明收集用于广告的标识符(IDFA),但标签未标记此类别,App Store Connect 会显示警告。
然而,完全的自动检查尚未实现。开发者有责任保持两个数据源(标签 + 清单)处于最新状态。不一致可能由审核人员在手动检查时发现,尤其是对于大型更新或数据量大的应用程序。
| 检查方法 | Apple | |
|---|---|---|
| 自我报告 | 是,基础 | 是,基础 |
| 自动代码检查 | 部分(从 2024 年起,通过清单) | 是 |
| 审核人员手动检查 | 可疑时 | 很少 |
Apple 将数据分为 14 个类别,分为 3 个部分:用于跟踪的数据;与用户相关的数据;与用户无关的数据。让我们看看主要类别。
“联系信息”类别包括姓名、电子邮件、电话、物理地址。“标识符”类别 — IDFA、用户 ID、用户名。如果应用程序使用通过社交网络登录并获取用户的电子邮件,则需要以 “功能执行”为目的提及此类别。
“支付数据”类别包括购买信息:卡号(如果未使用 Apple Pay)、购买历史记录。Apple Pay 不需要提及此类别,因为 Apple 在其端处理付款并且不将数据传递给开发者。
“使用数据”类别包括交互日志、广告点击、页面浏览、会话时长。大多数应用程序收集这些数据用于 分析。重要提示:如果数据传递给第三方(Google Analytics、Firebase),则需要标记 “分析”目的。
“诊断”类别包括崩溃日志、性能数据、启动报告。这些数据通常不与用户关联(not linked)并以聚合形式收集。尽管如此,如果应用程序使用 Crashlytics 或 Sentry,它们应在标签中反映。
“用户内容”类别包括照片、视频、音频、文件、用户生成的内容(消息、评论)。如果应用程序请求访问照片或文件,此类别是强制性的。即使应用程序只读取照片,这也被视为数据收集。
“购买历史记录”类别 — 关于应用内购买、订阅、付款的聚合数据。不要与“财务信息”混淆。购买历史记录是交易的 元数据,而不是付款详细信息。
在 App Store Connect 中为新的或更新的应用程序填写 Privacy Nutrition Label 的分步指南。
在填写标签之前,请制定所有收集数据的 SDK 和服务的完整列表:Firebase、AppsFlyer、Google Ads、Facebook SDK、Sentry、Amplitude。对于每个 SDK,检查它收集哪些数据以及是否传递给第三方。Adjust (2024) 建议为每个 SDK 维护一个包含数据类型、目的和关联的表格。
确定您的代码直接收集哪些数据。例如,如果应用程序保存搜索历史记录并将其与用户帐户关联 — 这些是用于 “产品开发”目的的 linked “使用数据”。始终检查数据是否没有传递给第三方(广告网络、分析)。
在 App Store Connect 中,选择应用程序 → “应用隐私”部分。单击 “开始”并选择您的应用程序是否收集用于跟踪的数据。如果没有,请进入问卷。依次回答所有 14 个数据类别的每个问题。
示例:如果应用程序使用 Firebase Analytics,对于 “使用数据”类别回答 “是”,指明 linked(Firebase 将数据与 Instance ID 关联)和目的 “分析”。如果您也使用 Firebase Crashlytics,请添加 “诊断”类别,目的为 “产品开发”。
填写后保存标签。如果您有多个应用程序,每个应用程序的标签都是唯一的 — 不支持复制。在数据收集逻辑 每次更改时 更新标签,否则旧标签可能无法与新功能匹配。
// 示例:检查分析数据的发送
import FirebaseAnalytics
final class AnalyticsService {
static func logEvent(_ name: String, params: [String: Any]) {
Analytics.logEvent(name, parameters: params)
}
static func logPurchase(amount: Double, currency: String) {
Analytics.logEvent(AnalyticsEventPurchase, parameters: [
AnalyticsParameterValue: amount,
AnalyticsParameterCurrency: currency
])
}
}
要更新已发布应用程序的标签,请在 App Store Connect 中打开应用程序版本并在 “应用隐私”部分进行更改。更改在通过审核后生效。新标签在更新发布后 24 小时内 向用户显示。
重要提示:从标签中删除数据(例如,您已停止向第三方传递数据)不需要新版本 — 只需在 App Store Connect 中更改标签即可。添加新数据既需要更改标签,也需要相应更新代码中的 Privacy Manife。
开发者在填写标签时经常犯错,导致更新被拒绝或用户投诉。
最常见的错误 — 开发者仅根据自己的代码填写标签,忘记了第三方 SDK。Firebase、AppsFlyer、Facebook SDK 等无需开发者的额外代码即可 自动 收集数据。例如,Firebase Analytics 收集使用数据(事件、屏幕)和标识符(Instance ID、IDFV)。
建议:对于每个集成的 SDK,阅读文档中的 “Data Collected”部分,并将相应的类别添加到标签中。AppsFlyer (2024) 发布了每个 SDK 版本收集的数据列表,帮助开发者检查标签。
许多开发者将数据标记为 not linked,而实际上它们与账户关联。如果用户拥有账户并且您存储了其姓名或电子邮件 — 这是 linked。如果您收集崩溃日志而不与账户关联 — 这是 not linked。关联中的错误可能被视为误导用户。
Linked 数据以黄色显示,吸引用户更多关注。如果您不确定特定数据类型是否为 linked,最好指明 linked 并在审核时提供解释。Apple 不会因过度声明而惩罚,但可能因声明不足而拒绝。
如果数据传递给第三方并用于定向广告,必须标记为 “用于跟踪的数据”。一些开发者以分析为借口传递数据来 隐藏 跟踪 — 这违反了 Apple 规则,可能导致封禁。
Apple 规则:如果数据传递给第三方并用于广告个性化或归因 — 这是跟踪。即使应用程序本身不显示广告,但使用 Google Ads 进行安装归因,查看数据也被视为跟踪。
旧标签不符合当前数据收集逻辑 — 应用程序长期维护中的常见问题。开发者更换 SDK、添加新功能,但忘记 更新标签。结果,用户看到过时的信息,降低了信任度。
最佳实践:每次与数据相关的代码更改时,检查标签和清单。建议设置 CI 检查,在更改 PrivacyInfo.xcprivacy 文件或 SDK 列表时提醒需要更新标签。
常见问题
是的,标签对于 所有 应用程序都是强制性的,包括免费、免费含购买和付费应用程序。唯一的例外是 “儿童”类别的应用程序,那里的规则更加严格。
App Store Connect 不允许在没有填写标签的情况下提交版本进行审核。已发布的应用程序仍保留在商店中,但无法接收 更新。
每次数据收集逻辑发生变化时:添加新 SDK、更改使用目的、将数据传递给第三方。至少每 6-12 个月 检查一次标签是否符合当前代码。
是的,任何用户都可以通过 Apple 表格报告标签与应用程序实际行为不符。收到多次投诉后,Apple 可以 进行检查 并拒绝下一次更新。
是的,标签在应用程序页面上可见,但不会显示在搜索结果或推荐中。用户在安装前 查看 应用程序页面时看到它们。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。