隐私声明

编辑

了解如何为您的移动应用配置 iOS 隐私清单。


若您使用的原生 iOS 库调用了“受限原因”API,则需配置 iOS 隐私清单文件,声明包含原生代码调用这些 API 的具体原因。

更多详情及“必需原因”API 列表请参阅Apple 开发者文档

本指南中的信息和步骤仍在开发中,可能因相关新工具的推出或苹果公司新增要求而变更。

什么是隐私清单?

隐私清单是名为 PrivacyInfo.xcprivacy 的文件,需包含在 iOS 原生项目中。该文件用于声明应用程序包含调用苹果公司视为敏感的特定 API 的原生代码的原因。

当前涉及的 API 包括访问 UserDefaults、文件时间戳、系统启动时间、磁盘空间及活动键盘。苹果将此视为开放列表,未来可能持续扩展。

应用配置中的设置

您可在应用配置的 expo.ios 节点下添加 privacyManifests 字段,即可包含 iOS 隐私清单文件。

app.json
{ "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?

您可以在基础 Expo 应用中包含 iOS 隐私清单文件,方法是使用 Xcode 创建一个 PrivacyInfo.xcprivacy 文件,并将其添加到 iOS 应用目标中。 请遵循Apple 隐私清单文件指南创建 PrivacyInfo.xcprivacy 文件。

您可通过查阅Apple 开发者文档来确定NSPrivacyAccessedAPITypesNSPrivacyAccessedAPITypeReasons的具体值。

为 Expo SDK 包及其他第三方库添加必需的权限理由

目前苹果无法正确解析静态 CocoaPods 依赖项(如 Expo SDK 包及其他生态库)包含的所有 PrivacyInfo 文件。您可能需要在应用的 PrivacyInfo.xcprivacy 文件或 app.json 配置中,为这些依赖项使用的 API 添加必需理由。

所有使用“必需理由”API 的 Expo SDK 包均在包目录中包含 PrivacyInfo 文件。以下是expo-application库附带的示例文件

通常可通过检查目标库在 node_modules/package_name/ios 目录下是否存在 PrivacyInfo.xcprivacy 文件,来确认第三方库所用 API 的必要性依据。若存在该文件,可查阅其中的 NSPrivacyAccessedAPITypesNSPrivacyAccessedAPITypeReasons 值,并将这些值复制到你的配置文件中。

另一种方式是:当开发者提交缺少隐私清单文件或特定理由的构建版本后,苹果会向其发送通知。您可等待苹果发送通知邮件,随后将邮件中列出的必要理由添加至应用的 PrivacyInfo.xcprivacy 文件(若未使用CNG),或添加至 app.json 文件的配置中。

隐私清单测试

您可通过构建应用并提交至 App Store 审核流程或 TestFlight 外部审核来测试隐私清单。若应用缺少所用 API 的必要理由说明,苹果将在提交后数分钟内发送邮件通知。