隐私清单
编辑页面
了解如何为您的移动应用配置 iOS 隐私清单。
For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.
如果你正在使用一个原生 iOS 库,并且该库使用了“受限原因”API,那么你需要配置 iOS 隐私清单,以声明你为什么要包含调用这些 API 的原生代码。
更多详情以及“必需原因”API 的列表可以在 Apple 开发者文档 中找到。
本指南中包含的信息和步骤仍在开发中,可能会因专为此目的构建的新工具或来自 Apple 的新要求而发生变化。
什么是隐私清单?
隐私清单是一个名为 PrivacyInfo.xcprivacy 的文件,包含在你的 iOS 原生项目中。此文件用于声明应用为什么包含会调用 Apple 认为敏感的某些 API 的原生代码。
这些 API 目前包括访问 UserDefaults、文件时间戳、系统启动时间、磁盘空间以及活动键盘。Apple 将其视为一个开放列表,未来可能会扩展。
在应用配置中的配置
你可以通过在应用配置中的 expo.ios 下使用 privacyManifests 字段来包含 iOS 隐私清单。
{ "expo": { "name": "My App", "slug": "my-app", %%placeholder-start%%... %%placeholder-end%% "ios": { "privacyManifests": { "NSPrivacyAccessedAPITypes": [ { "NSPrivacyAccessedAPIType": "NSPrivacyAccessedAPICategoryUserDefaults", "NSPrivacyAccessedAPITypeReasons": ["CA92.1"] } ] } } } }
请确保你已使用 npx expo install --fix 将 Expo SDK 库更新到与你的 SDK 版本对应的最新版本。
Are you using this library in an existing React Native app?
你可以通过使用 Xcode 创建一个 PrivacyInfo.xcprivacy 文件并将其添加到你的 iOS 应用目标中,从而在裸 Expo 应用中包含 iOS 隐私清单。 请按照 Apple 的隐私清单文件 指南创建一个 PrivacyInfo.xcprivacy 文件。
你可以通过查看 Apple 开发者文档 来识别 NSPrivacyAccessedAPITypes 和 NSPrivacyAccessedAPITypeReasons 的值。
为 Expo SDK 包和其他第三方库包含必需原因
截至目前,Apple 无法正确解析静态 CocoaPods 依赖项(例如 Expo SDK 包和其他生态系统库)中包含的所有 PrivacyInfo 文件。你可能需要在应用的 PrivacyInfo.xcprivacy 文件中,或在 app.json 的配置中,包含这些依赖项所使用 API 的必需原因。
所有使用“必需原因”API 的 Expo SDK 包都会在包目录中包含一个 PrivacyInfo 文件。这里有一个随 expo-application 库一起包含的 示例文件。
你通常可以通过检查你打算使用的第三方库在 node_modules/package_name/ios 目录中是否有 PrivacyInfo.xcprivacy 文件,来识别该库所使用 API 的必需原因。如果有,你可以查看该文件中的 NSPrivacyAccessedAPITypes 和 NSPrivacyAccessedAPITypeReasons 值,并将这些值复制到你的配置中。
另外,Apple 会在开发者提交缺少隐私清单文件或特定原因的构建后通知他们。你可以等待收到来自 Apple 的通知邮件,然后将邮件中列出的必需原因添加到你的 PrivacyInfo.xcprivacy 文件中(如果你不使用 CNG),或者添加到你的 app.json 文件配置中。
测试隐私清单
你可以通过构建并提交应用来测试隐私清单,无论是通过 App Store 审核流程还是 TestFlight 的外部审核。Apple 会在你提交后的几分钟内给你发送电子邮件,告知你的应用是否缺少所使用 API 的任何必需原因。