Apple 引入了一项隐私政策,以在 App Store 中面向 iOS、iPadOS、macOS、tvOS 和 visionOS 平台的全新和更新的应用程序中包含隐私清单文件。
隐私清单文件 (PrivacyInfo.xcprivacy) 列出了 Unity 应用程序或任何第三方 SDK、包和插件收集的数据类型,以及使用某些必需原因 API 类别的原因。
重要提示:如果未在隐私清单中声明您或第三方 SDK 使用必需原因 API,则应用程序可能会被 App Store 拒绝。面向 macOS 平台的应用程序不需要声明使用必需原因 API。对于 macOS 应用程序,仅当您计划在 App Store 上发布应用程序时,隐私清单要求才适用。有关更多信息,请访问关于必需原因 API 的 Apple 文档。
您必须查看您的原生代码、C# 代码以及数据收集和跟踪做法,以了解 Apple 的隐私清单政策是否适用于您。请遵循以下准则决定是否需要在您的产品中包含隐私清单文件:
如果您的应用程序包括多个第三方 SDK、包和插件,则这些第三方组件(如果适用)必须单独提供自己的隐私清单文件。注意:但是,您有责任确保这些第三方组件的所有者包含隐私清单文件。Unity 不对任何第三方隐私清单及其数据收集和跟踪做法负责。
如果您的应用程序包含调用 Apple 的必需原因 API 类别中列出的某些 API 的 C# .Net framework API 的 Unity 框架实现,则必须评估产品的 API 使用情况。如需评估数据收集和跟踪做法的组成部分,请参阅关于隐私清单文件的 Apple 文档。注意:您有责任评估每个 API 的使用情况并声明使用这些 API 的适用原因。
根据是使用 Unity 开发应用程序还是提供 SDK、包和插件以与 Unity 应用程序结合使用,提供隐私清单文件的要求可能会有所不同。
注意:为方便起见,提供了上述准则。在为项目创建隐私清单之前,请务必查看关于隐私清单文件的 Apple 文档。
如果要使用 Unity 开发应用程序,请考虑以下步骤:
如果满足步骤 1 中的其中一个或全部两个条件,请在 Xcode 中创建隐私清单文件并将其保存在项目的 Assets/Plugins 文件夹中。
在隐私清单文件中,声明使用必需原因 API 或 C# .Net framework API(如果适用)的已获批准的原因。
重要提示:如果未声明使用 API 的原因,应用程序可能会被 App Store 拒绝。面向 macOS 平台的应用程序不需要声明使用必需原因 API。
验证原生应用程序代码是否会收集 Apple 分类的任何类型的数据,并在隐私清单文件中声明这些数据类型(如果适用)。应用程序中使用的任何第三方 SDK、包和插件必须包含自己的单独清单文件,以声明数据收集和使用任何必需原因 API 以及已获批准的原因。
注意:
您有责任检查 Unity 框架内隐私清单的准确性,以及 Unity 项目中包含的任何第三方组件是否需要在隐私清单中进行任何声明。建议您在这些第三方组件中搜索对隐私清单声明的任何引用。
如果您是插件、包或 SDK 所有者,并且提供了要作为 .framework 包含在 Unity 项目中的服务或包,请执行以下步骤:
如果您的产品未在 Unity 项目中用作 .framework,请考虑将其作为 .framework 提供。如果无法实现,请按照以下步骤操作:
下表列出了调用名为文件时间戳 API 的必需原因 API 类别的 C# .Net API。如果您的应用程序、SDK、包或插件代码调用此列表中的任何 API,请遵循关于必需原因 API 的 Apple 文档中指定的准则,在隐私清单文件中声明使用这些 API 的原因。
注意:以下列表仅适用于 Unity 2021.3 LTS 及更高版本。
Unity 引擎调用以下类别中的必需原因 API,并声明这些类别以及使用它们的所列原因。
| Category | 原因 | 描述 |
|---|---|---|
| 文件时间戳 API | 0A2A.1 | C# 时间戳 API 使用 |
| 文件时间戳 API | C617.1 | 用于检查文件 |
| 用户默认 API | CA92.1 | 用于 PlayerPrefs API |
| 系统启动时间 API | 35F9.1 | 用于计算各种事件之间的时间 |
| 磁盘空间 API | E174.1 | 用于检查 AssetBundle 的磁盘空间 |
注意:从 Unity 编辑器版本 2021.3.35f1、2022.3.18f1 和 2023.2.7f1 开始,Unity 引擎会自动将这些原因包含在隐私清单文件中。如果您使用的是旧版 Unity 编辑器,必须始终在项目的隐私清单文件中声明这些原因。