# App Privacy 填写指南：SDK 要申报哪些数据

> App Privacy 用来申报你的 App 及其 SDK 收集的数据、用途、是否关联用户以及是否用于追踪。提交版本前必须先发布。

原始页面：[App Privacy 填写指南：SDK 要申报哪些数据](https://devoria.fr/zh-hans/blog/app-privacy-app-store-connect-sdk-data)
作者：[Mehdi Azizi](https://devoria.fr/zh-hans/mehdi-azizi)
发布：2026-11-04
内容最后修订：2026-11-04


App Privacy 是 App Store Connect 里的一个板块，用来生成你产品页上的隐私标签。你要在这里申报你的 App **以及你集成的 SDK** 收集的每一类数据：用来做什么，是否与用户关联，是否用于追踪。**只要你的回答还没发布，App Store Connect 就不让你把版本加入提交。**

这些回答随时可以修改，不需要新的 build。最难的是搞清楚 RevenueCat、Sentry、PostHog、Supabase、AppsFlyer、Meta 或 Expo 通知到底该申报什么。下面的表格基于每个 SDK 的文档和它们自带的隐私清单，于 2026 年 10 月 15 日核对过。

我自己用 Expo 和这些 SDK 发布 iOS App。这篇指南讲的是 Apple 的要求和我的实际做法，不能替代法律意见。

## App Privacy、隐私政策和隐私清单：三样不同的东西

- **隐私政策**是一个网页，你提供它的网址。写法见 [iOS App 隐私政策](https://devoria.fr/zh-hans/blog/ios-app-privacy-policy-guide)。
- **隐私清单**是打包进 build 的 `PrivacyInfo.xcprivacy` 文件，详见 [ITMS-91053 指南](https://devoria.fr/zh-hans/blog/itms-91053-missing-api-declaration-expo)。
- **App Privacy** 是 App Store Connect 里的问卷。它在你的产品页上显示为三块：用于追踪你的数据、与你关联的数据、未与你关联的数据。

**这三者说的必须是同一件事。** Apple 的 [App Privacy Details](https://developer.apple.com/app-store/app-privacy-details/) 页面写明，提交 App 及其更新时必须提供这些信息，而且它们也涵盖你的第三方合作方：分析工具、广告平台、SDK，以及你加入了其代码的服务商。

## 一步步填写 App Privacy

[App Store Connect 帮助文档](https://developer.apple.com/help/app-store-connect/manage-app-information/manage-app-privacy)详细列出了下面这些步骤。

要填写问卷，你的角色必须是 Account Holder、Admin 或 App Manager。

1. 在 Apps 中打开你的 App，然后点侧边栏里的 **App Privacy**。
2. 点击 **Get Started**。
3. 回答第一个问题：你或你的合作方是否收集数据？如果答案是否，选择“No, we do not collect data from this app”并保存，就完成了。
4. 否则，勾选所有被收集的数据类型，不管是你的代码收集的还是 SDK 收集的。
5. 针对每个类型，回答三个问题：用途、是否关联用户、是否用于追踪。
6. 检查产品页预览（Product Page Preview），点击 **Publish** 并确认。

如果你的 App 已经上线，Apple 要求回答描述的是线上版本的数据。

**先发布，再提交。** 2026 年 9 月，在 Piaf 上把版本加入提交时失败了，提示是：“You must have published answers to your app's data usages.” 我没找到通过 App Store Connect 公开 API 填写这个表单的方法，所以我都在网页界面里填，而且放在所有事情之前。

## 每项数据都要回答的三个问题

### “收集”是什么意思

对 Apple 来说，收集就是**把数据传出设备，并且能在超出响应请求所需的时间之后继续访问它**。所以：

- 只在 iPhone 上处理的数据不算收集；
- 发送后立即丢弃的令牌或 IP 地址也不算；
- 仅为 App 功能而收集的数据仍然要申报，并注明这个用途。

### 用途

Apple 给出六种用途：第三方广告、开发者的广告或营销、分析、产品个性化、App 功能和其他用途。同一项数据可以勾选多个：一个既用于登录又用于个性化 App 的邮箱，就勾选 App 功能和个性化。

### 与用户关联

当数据通过账号、设备或其他方式与用户身份挂钩时，它就是关联的。Apple 指出数据通常都是关联的，除非你在收集前就做了匿名化，并且之后从不尝试重新关联。**一旦你把账号 ID 传给某个 SDK（identify、setUser、logIn），这个 SDK 的数据就变成关联数据。**

### 追踪

追踪是指把你的 App 数据和其他公司的 App 或网站的数据关联起来，用于定向广告或广告效果衡量。把数据分享给数据经纪商也算。**如果某个 SDK 会把你的数据和其他 App 的数据交叉用于广告，就算追踪，即使你自己并不这么用。**

追踪选“是”会带来两个后果：在任何追踪之前要弹出 App Tracking Transparency 请求，详见 [guideline 5.1.2](https://devoria.fr/zh-hans/blog/guideline-5-1-2-third-party-ai-att-data-sharing)；隐私清单里要声明追踪及其域名，缺少域名就会收到 [ITMS-91064 错误](https://devoria.fr/zh-hans/blog/itms-91064-invalid-tracking-information-fix)。

## Expo App 的各个 SDK 要申报什么

这张表基于每个 SDK 的默认配置。**一旦你给它们传了更多东西，比如邮箱、账号 ID 或自定义事件，就要申报更多。**

| SDK                | 要申报的数据        | 追踪        | 来源                 |
| ------------------ | ------------------- | ----------- | -------------------- |
| RevenueCat         | 购买记录            | 否          | RevenueCat 文档      |
| Sentry             | 崩溃、性能          | 否          | 文档和隐私清单       |
| PostHog            | App 交互            | 否          | PostHog iOS 隐私清单 |
| Supabase Auth      | 邮箱、用户 ID       | 否          | 未找到文档           |
| AppsFlyer          | 设备 ID、交互       | 是，设备 ID | AppsFlyer 隐私清单   |
| Meta SDK           | 设备 ID、崩溃       | 是，设备 ID | Meta 文档和隐私清单  |
| Expo Notifications | 设备 ID（推送令牌） | 否          | 未找到文档           |

### RevenueCat

[它的 App Privacy 文档](https://www.revenuecat.com/docs/platform-resources/apple-platform-resources/apple-app-privacy)要求申报购买记录，并勾选所有 RevenueCat 用户都必须勾选的两个用途：分析和 App 功能。是否关联：如果你的 ID 是匿名的，选否；如果你的 RevenueCat 用户 ID 能关联到邮箱，选是。如果你传入自己的 ID，再加上用户 ID；如果你把邮箱作为属性发送，再加上联系信息。SDK 的隐私清单只写了 App 功能：以更完整的文档为准。接入方法见 [用 RevenueCat 做 App 内订阅](https://devoria.fr/zh-hans/blog/revenuecat-ios-in-app-subscription-setup)。

### Sentry

[它的移动端隐私页面](https://docs.sentry.io/security-legal-pii/security/mobile-privacy/)写得很清楚：Sentry 是需要申报的合作方，标准用途是分析和 App 功能，它不做追踪，也不需要广告标识符。[它的隐私清单](https://github.com/getsentry/sentry-cocoa/blob/main/Sources/Resources/PrivacyInfo.xcprivacy)声明了崩溃数据、性能数据和其他诊断数据，均未关联。如果你用 `Sentry.setUser` 把账号 ID 附加到报告上，这些数据就变成关联数据。

### PostHog

我没找到 PostHog 发布的 App Privacy 建议。它的 [iOS SDK 隐私清单](https://github.com/PostHog/posthog-ios/blob/main/PostHog/Resources/PrivacyInfo.xcprivacy)声明了 App 交互和其他使用数据，未关联，无追踪，用于分析。针对 React Native，[它的文档](https://posthog.com/docs/libraries/react-native)指出默认会采集 App 生命周期，使用 React Navigation 6 或更早版本时还会采集屏幕浏览；`identify` 会把之前的事件关联到用户；另外会附加根据 IP 推断的位置，除非使用 `disableGeoip`。我的看法是，如果你保留这个位置，就申报粗略位置。

### Supabase Auth

据我所知，Supabase 没有发布 App Privacy 建议。按照 Apple 的定义，邮箱登录需要申报邮箱地址和用户 ID，用于 App 功能，关联。[它的审计日志](https://supabase.com/docs/guides/auth/audit-logs)还会记录每次登录的 IP 地址：Apple 要求根据你对保留 IP 的用途来申报。另外，你存进数据表的所有东西都算：内容、照片、历史记录。

### AppsFlyer 和 Meta

两者的隐私清单都把**设备 ID 声明为用于追踪、用于第三方广告**。[AppsFlyer](https://github.com/AppsFlyerSDK/AppsFlyerFramework/blob/master/Resources/PrivacyInfo.xcprivacy) 的清单还加了 App 交互，用于分析。[Meta](https://github.com/facebook/facebook-ios-sdk/blob/main/FBSDKCoreKit/FBSDKCoreKit/PrivacyInfo.xcprivacy) 的清单还加了崩溃数据和其他数据。[Meta 的 iOS 文档](https://developers.facebook.com/docs/ios)说明，它的清单只覆盖默认收集的数据：额外的数据要由你自己申报。

2026 年 7 月，我在 TradaZen 里接入 AppsFlyer 时，加上了设备 ID，用于第三方广告和分析，用于追踪。产品页上随即出现了“Data Used to Track You”这一块。而带 AppsFlyer 的第一个 build 在处理阶段就被拒了：App 的隐私清单声明了追踪，却没写域名。

### Expo Notifications

我没找到 Expo 发布的建议，而且 [expo-notifications 的隐私清单](https://github.com/expo/expo/blob/main/packages/expo-notifications/ios/PrivacyInfo.xcprivacy)没有声明任何收集的数据。但你存在服务器上的推送令牌，对你的 App 来说就能识别设备。我比较保守的理解是：设备 ID，用于 App 功能，如果和账号存在一起就是关联的，无追踪。这不是 Apple 写明的规则。

## 我的方法：用一份清单把所有东西对齐

动问卷之前，我先重读已发布的隐私政策。TradaZen 的政策列出了登录邮箱、订阅、通知令牌、使用统计、错误报告，以及需经同意的广告归因。

政策里的每一行都对应 App Privacy 里的一个类型。**每当我加入一个会发送数据的 SDK 或功能，我会在同一天修改隐私政策、App Privacy 和隐私清单。**

检查时，用上面提到的 ITMS-91053 指南里的命令列出打包进去的隐私清单。如果你有 Mac 和 Xcode，[隐私报告](https://developer.apple.com/documentation/bundleresources/describing-data-use-in-privacy-manifests)会把它们汇总起来：Product，然后 Archive，然后在 Organizer 里点 Generate Privacy Report。Apple 把它定位为填写 App Store Connect 的辅助工具。

## 不用新 build 就能更新 App Privacy

Apple 写得很明白：你可以随时修改回答，不需要更新 App。**而隐私政策的网址只能随下一个版本修改**，这是 App Store Connect 帮助文档里说的。

在这些情况下更新 App Privacy：加入新 SDK 时，把账号 ID 传给现有工具时，或者某个功能开始发送新类型的数据时。只涉及这些申报的拒审可以在线修正，和 [guideline 5.1.1](https://devoria.fr/zh-hans/blog/guideline-5-1-1-app-store-rejection-fix) 一样。

## 在 Apple 之前先检查你的材料

[Review Kit](https://devoria.fr/zh-hans/kits/app-review) 包含我的提交前检查清单、我处理过的拒审案例，以及两个 Claude Code skill：它们会检查你的项目和产品页，并在 Apple 拒审时帮你准备回复。

想知道还有什么会卡住你？[免费诊断](https://devoria.fr/zh-hans/diagnostic)会把我的 Apple 防拒审清单发给你。完整的上架流程请看 [把应用发布到 App Store](https://devoria.fr/zh-hans/expertise/publish-an-app-on-the-app-store)。

## 常见问题

### App Store Connect 里的 App Privacy 是什么？

它是生成你 App Store 产品页隐私标签的问卷：你的 App 及其 SDK 收集的数据、用途、是否关联用户以及是否追踪。提交 App 及其更新时必须填写。

### 修改 App Privacy 需要新的 build 吗？

不需要。Apple 表示你可以随时修改回答，不需要更新 App：改完之后点 Publish 就行。只有隐私政策的网址要等到下一个版本。

### RevenueCat 在 App Privacy 里要申报什么？

根据 RevenueCat 的文档，申报购买记录，用途为分析和 App 功能。如果你传入自己的 ID，再加上用户 ID；如果你把邮箱作为属性发送，再加上联系信息。

### Sentry 和 PostHog 算 Apple 定义的追踪吗？

默认配置下不算。Sentry 表示不会用你的数据追踪用户，PostHog 的 iOS 隐私清单也没有声明追踪。不过一旦你把账号 ID 传给它们，它们的数据就变成关联数据。

### 为什么我无法把版本加入提交？

通常是因为 App Privacy 还没发布。这时 App Store Connect 会显示“You must have published answers to your app's data usages”。先发布你的回答，再加入版本。


## 你的项目

[Review Kit](https://devoria.fr/zh-hans/kits/app-review)：我的 App Store 审核清单、我被 Apple 拒审后的修正方案、Google Play 审核清单，以及三个 Claude Code skill。¥369。

[iOS & Android Kit](https://devoria.fr/zh-hans/kits/ios)：用 Claude Code 打造你的 iPhone 和 Android 应用：我自己应用的起步代码、上架商店的完整流程，以及全部工具包。¥739。

[诊断：你离自己的 iPhone 应用还差什么](https://devoria.fr/zh-hans/diagnostic)：7 个问题，60 秒：看清真正阻碍你发布 iPhone 应用的原因，拿到你的 4 步路线和适合你的套件。
