iOS17隐私清单和签名
背景
我们将在今年晚些时候发布更多信息,包括:
- 影响隐私的 SDK 列表 (对用户隐私产生重大影响的第三方 SDK)
- “需要指明原因”的 API 列表,使用它们时必须给出合理的原因
- 开发者反馈表,用于就调用涉及的 API 提出新的原因
- 其他文档,详细介绍签名和隐私清单、他们的优势以及何时需要使用它们
第三方 SDK 隐私清单和签名。 第三方软件开发工具包 (SDK) 能够为 App 提供强大的功能,同时也
能会影响用户隐私,而这些影响可能对开发者和用户来说并不明显。请注意,当你将第三方 SDK 与你的
App 搭配使用时,你需要对 App 中使用的相应 SDK 包含的所有代码负责,并且需要了解 SDK 的数据收
和使用实践。
自 3 月 13 日起:如果你上传新 App 或更新 App 到 App Store Connect,且该 App 使用了需要声
批准原因的 API,但你未在 App 的隐私清单中提供批准原因,我们会通过电子邮件告知你。这是对
App Store Connect 中现有通知的补充。自 5 月 1 日起:你需要就你的 App 代码使用的所列 API 提供批准原因,才能将新 App 或更新 App
传到 App Store Connect。如果你没有合理的原因使用某个 API,请寻找替代的方案。如果你添加了常
第三方 SDK 列表中所列的新版第三方 SDK,那么这些 API、隐私清单和签名要求将应用于该 SDK。请务
使用包含其隐私清单的 SDK 版本,并注意在将该 SDK 添加为二进制依赖项时也需要提供签名。
隐私清单和SDK签名
Apple会列举必需使用的API类型和使用原因,还有常用的三方SDK。开发者要对APP和SDK使用到这些API的原因进行描述,配置到隐私清单中。对于提供二进制版本的三方SDK,需要第三方提供包含签名的SDK
隐私清单是什么
隐私清单是一个属性列表,记录您的应用程序或第三方SDK收集的数据类型,以及您的应用程序或第三方SDK使用的API所需的原因。对于您的应用程序或第三方SDK收集的每种类型的数据及其使用的API所需的原因类别,请在您的隐私清单文件中记录原因
配置隐私清单
在Xcode15中可以配置隐私清单,三方的SDK可以更新到最新版本,一些SDK会配置好了 PrivacyInfo.xcprivacy 隐私清单


SDWebImage 隐私清单示例
| Key | 说明 |
|---|---|
| NSPrivacyTracking | 布尔值,指示您的应用程序或第三方SDK是否使用应用程序跟踪透明度框架下定义的数据进行跟踪。 |
| NSPrivacyTrackingDomains | 一组字符串,列出您的应用程序或第三方SDK连接到的参与跟踪的互联网域。如果用户未通过应用程序跟踪透明度框架授予跟踪权限,则对这些域的网络请求将失败,您的应用程序将收到错误. 如果将NSPrivacyTracking设置为true,则需要在NSPrivaceTrackingDomains中至少提供一个internet域;否则,您可以提供零个或多个域。 |
| NSPrivacyCollectedDataTypes | 一组字典,用于描述应用程序或第三方SDK收集的数据类型。有关要在字典中使用的键和值的信息 |
| NSPrivacyAccessedAPITypes | 使用了苹果需要说明原因的api时需要填写 |
NSPrivacyTracking
注意是否使用了==AppTrackingTransparency==框架。
官方文档
NSPrivacyTrackingDomains
如果用户未通过 App Tracking Transparency (ATT) 授予权限, Apple 就会阻止对追踪域(Tracking Domains)的网络请求。
NSPrivacyCollectedDataTypes
不管有没有使用 ATT 进行跟踪,都要说明收集了哪些数据类型和原因
收集的数据内容
示例:
NSPrivacyAccessedAPITypes
APP需要声明使用原因的API分类 API和使用的原因
- File timestamp APIs
- System boot time APIs
- Disk space APIs
- Active keyboard APIs
- User defaults APIs
示例:
SDK 签名
当你在 App 中采用第三方 SDK 的新版本时,Xcode 将验证它是否由同一开发者签名。Apple的目的就是想确保SDK不会被篡改
如果是使用cocoapod管理版本,先升级一下最新版本库,看看作者有没有对签名进行处理,如果没有就要自己签名
并不是所有的SDK都需要签名,但是Apple鼓励所有的SDK,主要看Apple提供的SDK清单
1 | // 搜索指定目录下是否包含_CodeSignature签名目录 |

导出隐私清单

相关问题
如果作者已经不维护的SDK怎么办,比如AF
理论上要自己生成清单和签名,但是重新pod后又会消失。可以考虑要不要自己维护
Flutter 这次很多插件都会受影响
官方已经在跟进,后续查看
如何查看使用到必需API
可以使用脚本
参考链接
# Flutter 上了 Apple 第三方重大列表,2024 春季 iOS 的隐私清单究竟是什么?
# iOS 隐私清单和三方SDK签名适配
