你的 App Store 隐私标签必须涵盖分析 SDK 及其他第三方 SDK 收集的数据,而不仅仅是你自己的代码发送的数据。在 App Store Connect 中回答“App 隐私”问题之前,先列出该版本中的每一个 SDK,记录每个 SDK 发送到设备之外的数据,并判断其中是否有数据用于跟踪。依据这份清单作答,而不是凭记忆。
App Store 隐私标签必须包含第三方 SDK 的数据吗?
是的。Apple 要求你申报第三方合作伙伴代码收集的数据,即使该 SDK 收集数据的目的并非分析或广告。
Apple 的 App 隐私页面将第三方合作伙伴定义为“你添加到 App 中的分析工具、广告网络、第三方 SDK 或其他外部供应商的代码”。因此,崩溃报告工具或登录库都应列入你的清单。是否属于收集,判断标准在于传输:“收集”是指“以允许你和/或你的第三方合作伙伴在超出实时处理所传输请求所需的时间内访问数据的方式,将数据传输到设备之外”。仅在设备上处理的数据不算收集。
如何为隐私标签建立 SDK 清单?
根据发布构建解析出的依赖(包括传递依赖)建立清单,并记录每个 SDK 的名称和版本。
- 导出每个平台解析后的依赖列表:
Podfile.lock、Package.resolved、pubspec.lock或 Gradle 依赖树。 - 保留传递依赖。Apple 的第三方 SDK 要求指出,你要“对 SDK 加入你 App 中的所有代码负责”,因此 SDK 引入的共享模块同样算在内。
- 记录每一项的名称和版本。供应商在不同版本之间可能改变数据处理方式,所以版本号应写进你的审查记录。
- 标记出现在 Apple 常用第三方 SDK 清单中的 SDK。对于这些 SDK,当你提交新 App 或新增它们的更新时,Apple 要求提供隐私清单;若它们是二进制依赖,还要求提供签名。“清单中 SDK 的任何版本,以及重新打包清单中 SDK 的任何 SDK,均包括在内。”
把这一步加入你的 App Store 提交检查清单,让它在每次发布时都执行,而不只是第一次。
每个 SDK 对应哪些 App Store 隐私数据类型?
每个 SDK 都对应 Apple 固定数据类型中的一种或多种,例如崩溃数据、性能数据、产品交互、设备 ID 和广告数据。阅读供应商的数据说明文档,为每个 SDK 填写一行:
| SDK 角色 | 需检查的数据类型 | 关键问题 |
|---|---|---|
| 崩溃报告 | 崩溃数据、性能数据 | 崩溃数据是否离开设备?是否与用户 ID 关联? |
| 产品分析 | 产品交互、其他使用数据、设备 ID | 设备 ID 是否与其他公司或 App 共享? |
| 归因或广告效果衡量 | 广告数据、设备 ID、购买历史记录 | 数据是否与其他 App 的数据合并用于广告? |
| 登录 | 电子邮件地址、用户 ID | 供应商是否在你的 App 之外再利用账户数据? |
Apple 表示,收集的数据“通常与用户身份关联,除非在收集前采取了特定的隐私保护措施进行去标识化或匿名化”,例如去除用户 ID 或姓名等直接标识符。收集之后,你也不得将数据重新关联到用户,或将其与能识别用户的其他数据集相关联。如果无法确认某个 SDK 会对数据去标识化,就将其标记为与用户关联。
分析 SDK 什么时候算作跟踪?
当分析 SDK 将你的用户或设备数据与其他公司 App 或网站的数据关联,用于定向广告或广告效果衡量,或将这些数据分享给数据经纪商时,就算作跟踪。
Apple 的定义是:“将从你的 App 收集的有关特定最终用户或设备的数据(例如用户 ID、设备 ID 或个人资料)与第三方数据相关联,用于定向广告或广告效果衡量;或将从你的 App 收集的有关特定最终用户或设备的数据分享给数据经纪商。”只在你自己 App 数据范围内进行的分析不算跟踪;跨 App 共享标识符的广告效果衡量则算。
陷阱在于那些并非广告 SDK 的合作伙伴。Apple 举的例子是“将从你的 App 收集的数据重新用于在其他开发者 App 中投放定向广告的登录 SDK”,即使你自己并未将该 SDK 用于这一目的,这也算作跟踪。如果你的某个 SDK 存在这种行为,常见的修复方式是通过配置关闭跨 App 使用,或者更换供应商。
SDK 数据可以不写进隐私标签吗?
只有当某种数据类型同时满足 Apple 的全部四项可选披露条件时才可以,而分析数据和崩溃数据几乎从不满足。这些条件是:
- 不用于跟踪。
- 不用于第三方广告、你自己的广告或营销,或其他目的。
- 仅在 App 主要功能之外的少数情况下收集,且对用户而言是可选的。
- 由用户在 App 界面中提供,用户清楚知道收集了哪些内容,用户的姓名或账户名在提交表单中醒目显示,并且用户每次都主动选择提供。
Apple 还补充说:“在初次请求许可后持续收集的数据必须披露。”分析 SDK 持续运行,用户也不会每次都主动选择,因此不满足最后两项条件。
完成后的 SDK 审查是什么样子?
完成后的审查为每个 SDK 提供一行,写明需要申报的内容、数据是否与用户关联,以及是否用于跟踪。以下是一个假设的习惯追踪 App(含三个 SDK)的模板。具体答案取决于各供应商的文档,因此这些并非针对真实产品的结论。
| SDK | 申报内容 | 是否与用户关联 | 是否用于跟踪 |
|---|---|---|---|
| 崩溃报告工具(FirebaseCrashlytics,在 Apple 清单中) | 崩溃数据、性能数据 | 是,如果与用户 ID 关联 | 否,如果未与第三方数据合并用于广告 |
| 产品分析 | 产品交互、设备 ID | 是 | 否,如果供应商不跨 App 共享数据用于广告 |
| 登录 | 电子邮件地址、用户 ID | 是 | 是,如果供应商使用账户数据在其他 App 中定向投放广告 |
登录这一行会改变整个工作量。它让 App 成为跟踪型 App,因此标签必须如实说明,你的用户同意处理也必须与之匹配。在提交前换用不跨 App 共享数据的登录供应商,或关闭这种共享,远比被拒之后再处理省事。然后在启用所有 SDK 的情况下测试发布构建,做法参见发布构建测试计划。
其他开发者踩过哪些坑?
公开报告的案例显示了三个出错点:标签与二进制文件不一致、开发者不知道的 SDK 数据,以及列入清单的 SDK 未附带隐私清单就发布。
- Apple Developer Forums 上的一位开发者在新构建中移除了跟踪,却无法从标签中移除跟踪。App Store Connect 提示“你的 App 包含 NSUserTrackingUsageDescription,表明你将请求跟踪用户的许可”,审核则不断以“你在 App Store Connect 中提供的 App 隐私信息表明你收集数据以跟踪用户……但你没有使用 App Tracking Transparency”为由拒绝。这位开发者表示,在提出申诉并等到回复后再重新提交,App 才获得批准。
- Apple Developer Forums 上的另一位开发者使用了 Firebase Analytics,关闭了 IDFA 和 IDFV 收集,标签也写明“不跟踪”,却仍然因 5.1.2 准则被拒。拒绝信写道:“收集 Cookie 是一种跟踪形式。”问题指向的是 App 加载的网页内容中的 Cookie,而不是 Firebase。有回复指出了这一不一致,但没有人贴出修复方案。
- RxSwift GitHub issue 中的开发者收到了针对 RxSwift、RxRelay 和 RxCocoa 的“ITMS-91061: Missing privacy manifest”(缺少隐私清单)。一位用户把 CocoaPods 指向包含隐私清单的 6.8.0 分支,并反馈下一次更新发布时“没有收到 Apple 的任何警告”。
共同点在于:Apple 会把你的答案与实际发布的二进制文件及其网页内容的真实行为进行比对,因此基于真实构建建立的清单能在审核之前发现这三类问题。
如何在 App Store Connect 中发布和更新隐私标签?
在 App Store Connect 中你 App 的“App 隐私”部分发布隐私标签。答案只有在你点击“发布”后才会生效,Apple 表示你可以随时修改,无需提交 App 更新。
- 在 App Store Connect 中选择 App,点击侧边栏中的“App 隐私”(App Privacy),然后点击“开始”(Get Started)。
- 说明你或你的第三方合作伙伴是否收集数据,勾选审查中得出的每一种数据类型,然后点击“存储”(Save)。
- 回答每种数据类型的后续问题,点击“存储”,并检查产品页面预览(Product Page Preview)。
- 点击右上角的“发布”(Publish),并在准确性确认对话框中确认。
根据管理 App 隐私,你需要拥有“账户持有人”、“管理”或“App 管理”角色。如果产品页面尚未上线,你的回答会在页面上线时发布。如果 App 已在销售,你的回答应仅反映该版本收集的数据。隐私政策 URL 的修改“会随下一个 App 版本一起发布”。如果审核已经指出了隐私问题,请先阅读 App Store 被拒修复指南。
常见问题
修改 App Store 隐私标签需要提交新构建吗?
不需要。Apple 的 App 隐私页面说明,你可以随时更新答案,修改时无需提交 App 更新。在 App Store Connect 的“App 隐私”中编辑回答并点击“发布”即可。有一个例外:隐私政策 URL 的修改会随下一个 App 版本一起发布。Apple 的另一项提醒是:对于已上架销售的 App,答案应与当前线上的版本保持一致。
Firebase Crashlytics 需要隐私清单吗?
需要。截至 2026 年 10 月,FirebaseCrashlytics 在 Apple 要求提供隐私清单和签名的 SDK 清单中。当你提交包含它的新 App,或提交新增它的更新时,该要求即适用。清单中 SDK 的任何版本都算在内,重新打包了这些 SDK 的任何 SDK 也一样。请使用当前的 Firebase 版本,并检查 PrivacyInfo.xcprivacy 文件是否确实被打包进构建出的框架中。
隐私清单和隐私标签有什么区别?
隐私清单是位于你的 App 或某个 SDK 中的 PrivacyInfo.xcprivacy 文件,用于描述该代码收集的数据。在准备分发时,Xcode 会把第三方 SDK 的隐私清单合并成一份报告。隐私标签则是你在 App Store Connect 的“App 隐私”中发布的一组答案,用户会在你的产品页面上看到这些答案。请把 Xcode 报告作为回答的参考输入,而不是用它代替你自己的审查。
如果隐私标签写明我会跟踪,是否需要 App Tracking Transparency 弹窗?
实际上需要。Apple Developer Forums 上有开发者反馈遭到 5.1.2 准则拒绝,拒绝信中说隐私信息表明存在跟踪,“但你没有使用 App Tracking Transparency 请求用户许可”。如果你确实进行跟踪,请在任何跟踪开始之前加入 ATT 弹窗。如果没有跟踪,请修正标签,并从构建中移除 NSUserTrackingUsageDescription。
谁可以在 App Store Connect 中编辑 App 隐私答案?
回答并发布隐私问题需要“账户持有人”(Account Holder)、“管理”(Admin)或“App 管理”(App Manager)角色。编辑隐私政策 URL 和可选的隐私选项 URL 时,“营销”(Marketing)角色也可以操作。没有上述角色的开发者仍然可以完成 SDK 清单盘点,再把整理好的答案交给 Admin 录入并发布。
来源与延伸阅读
政策会变化。提交前请查阅官方文档。
- App Store 上的 App 隐私详情 - Apple Developer ↗核查于 2026年10月27日
- 管理 App 隐私 - App Store Connect 帮助 ↗核查于 2026年10月27日
- 第三方 SDK 要求 - Apple Developer ↗核查于 2026年10月27日
- Apple 审核因隐私信息中包含跟踪而拒绝 App - Apple Developer Forums ↗核查于 2026年10月27日
- 因使用 Firebase Analytics 被 App Store Connect 拒绝(5.1.2 准则)- Apple Developer Forums ↗核查于 2026年10月27日
- ITMS-91061:缺少隐私清单 - ReactiveX/RxSwift Issue #2625 ↗核查于 2026年10月27日


