跳到主要内容

Apple 隐私清单文件

警告

如果您未在隐私清单中正确声明 API 的使用和数据处理的原因,您可能会收到 ITMS-91053 Missing API declaration 的警告。从 2024 年 5 月 1 日起,未包含这些声明的应用程序将 无法上传或更新 。

在 2024 年 3 月 13 日之后向 App Store 提交新的应用程序版本或更新现有版本,请注意 Apple 的隐私政策更新。根据最新要求,开发者在提交应用程序时,必须提供隐私清单文件(PrivacyInfo.xcprivacy),详细说明应用程序如何使用用户数据。更多信息,查看关于 App Store 提交的隐私更新。

这些变化强调了 Apple 对于隐私保护的承诺,同时也给开发者提出了新的挑战,要求他们在设计和开发应用程序时更加关注用户隐私。开发者需要确保他们的应用程序和集成的第三方 SDK 都符合新的隐私政策要求,以免影响应用程序在 App Store 上的发布和更新

为了避免这种情况,请按照 隐私清单配置指南 准备您的 PrivacyInfo.xcprivacy 文件。此文件应详细描述您的应用程序如何处理各种数据类型,并为每种数据使用提供合理的说明。

更多资料见:

Unity​

  • 从 Unity 2021.3.35f1、2022.3.18f1 和 2023.2.7f1 开始,Unity 在导出 Xcode 工程时增加 新功能: 检测 Unity C# API,并会自动生成 所需的 Reason API 声明 至 /UnityFramework/PrivacyInfo.xcprivacy
  • Unity 同时也支持自定义的 PrivacyInfo.xcprivacy,Unity 会搜索 Assets/Plugins目录,自动合并至 Xcode 工程的 /UnityFramework/PrivacyInfo.xcprivacy 中。

低版本 Unity 适配 Combo SDK​

信息

此方案适用于 不能 升级新版本的 Unity 研发团队

1. 手动创建 PrivacyInfo.xcprivacy​

2. 合并数数 SDK 隐私清单​

因为低版本 Unity 不支持自动合并 Plugins/PrivacyInfo.xcprivacy,所以需要将 com.seayoo.sdk/ThinkingData/Plugins/iOS/PrivacyInfo.xcprivacy 的内容 手动 合并到游戏研发创建的 PrivacyInfo.xcprivacy 中。

PrivacyInfo.xcprivacy
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeProductInteraction</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeCrashData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypePerformanceData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeCoarseLocation</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeUserID</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeDeviceID</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
</array>
<key>NSPrivacyTrackingDomains</key>
<array/>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>1C8F.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>E174.1</string>
<string>7D9E.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>35F9.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>C617.1</string>
</array>
</dict>
</array>
</dict>
</plist>

3. Xcode 添加 PrivacyInfo.xcprivacy​

Unity 导出到 Xcode 工程后,手动将 PrivacyInfo.xcprivacy 文件添加到 Xcode 工程

img

提示

推荐使用 Unity PostBuild,可以将 Unity 目录的 PrivacyInfo.xcprivacy 添加至 Xcode Project

Combo SDK 的隐私清单​

Combo SDK 所有 xcframework 均已提供隐私清单文件,接入 Combo SDK 时无需做额外处理按原来的方式集成即可,如果想要查看 Combo SDK 的隐私清单,可以自行查看 xcframework 内的 PrivacyInfo.xcprivacy。

查看隐私清单报告​

隐私清单报告可以帮助开发者了解其如何使用隐私数据及相关API。开发者可以在Xcode 将第三方 SDK 中的隐私清单合并,然后导出一个 PDF 报告汇总,在向 App Store 提交审核时,填写隐私标签时可以参考报告,可通过 Xcode 15 生成隐私报告,验证是否符合预期。

img

隐私清单报告示例​

img

延伸阅读​

其他 SDK 厂商

FAQ​

使用 Unity 支持 Privacy 的版本,还需要适配 Combo SDK 吗?​

答:不需要做任何适配

若游戏中使用了其他第三方 SDK,应该怎么处理隐私清单?​

答: 可以按照第三方 SDK 文档说明进行处理

提示
  • 如果第三方依赖是 .a 文件,需要手动将三方的 .xcprivacy 合并
  • 如果第三方依赖是 framework、xcframework,且没有通过 embed 到 Xcode,需要手动将三方提供的 .xcprivacy 合并
  • 其它的 framework、xcframework、bundle 内如果包含 .xcprivacy Xcode 会自行合并