一、背景
推出了两项新功能: 隐私清单和SDK签名
从 2024 年春季开始,如果你提交的新 App 或 App 更新添加了 App Store 上的 App 中常用的第三方 SDK,那么你需要包含相应 SDK 的隐私清单。将 SDK 用作二进制文件依赖项时,也需要包含签名。
- 自 3 月 13 日起,App 使用了需要声明批准原因的 API,但你未在 App 的隐私清单中提供批准原因,会通过电子邮件告知。
- 自 5 月 1 日起,你需要就你的 App 代码使用的所列 API 提供批准原因,才能将新 App 或更新 App 上传到 App Store Connect。
从上述说明来看,我们的APP需要在5 月 1 日起提交审核时需要适配隐私清单和签名。
二、隐私清单和SDK签名
2.1 清单文件文件是什么
苹果通过隐私文件来让三方SDK或APP来列举和描述收集的数据和使用的需要说明原因的API。
隐私清单:developer.apple.com/documentati...
需要适配的三方SDK列表:developer.apple.com/cn/support/...
2.2 隐私清单文件填写
- 清单文件需要使用xcode15来创建,文件中的内容如图
创建之后可以根据项目情况填写key对应的值,填写时从已有选项中选择。
- 隐私清单文件中键值对说明
Key | 说明 |
---|---|
NSPrivacyTracking | 布尔值,指示您的应用程序或第三方SDK是否使用应用程序跟踪透明度框架下定义的数据进行跟踪。官方文档 |
NSPrivacyTrackingDomains | 一组字符串,列出您的应用程序或第三方SDK连接到的参与跟踪的互联网域。如果用户未通过应用程序跟踪透明度框架授予跟踪权限,则对这些域的网络请求将失败,您的应用程序将收到错误. 如果将NSPrivacyTracking设置为true,则需要在NSPrivaceTrackingDomains中至少提供一个internet域;否则,您可以提供零个或多个域。 |
NSPrivacyCollectedDataTypes | 一组字典,用于描述应用程序或第三方SDK收集的数据类型。有关要在字典中使用的键和值的信息,请参阅描述隐私清单中的数据使用。 |
NSPrivacyAccessedAPITypes | 使用了苹果需要说明原因的api时需要填写,请参阅描述所需原因API的使用。 |
- NSPrivacyCollectedDataTypes的示例图
- 需要说明原因的API
- File timestamp APIs
- System boot time APIs
- Disk space APIs
- Active keyboard APIs
- User defaults APIs
- 示例图
2.3 SDK 签名
对于提供二进制版本的三方SDK,需要第三方提供包含签名的SDK。当你在 App 中采用第三方 SDK 的新版本时,Xcode 将验证它是否由同一开发者签名,从而提高软件供应链的完整性。
签名其实分 Apple Developer Program 签名和自签名。经过签名认证后的 SDK ,在 Xcode15 会显示对应的 Signature 信息,如果一旦发现本次前面和上次不一致,那么Xcode 就会让编译失败并弹出警告。 Apple 鼓励所有 SDK 使用签名, 如果是在苹果三方SDK列表中的作为二进制依赖项,需要提供签名。
2.4 SDK 签名做法
这里列举一下相关命令行
bash
# 1.搜索指定目录下是否包含_CodeSignature签名目录
find -name -type d "_CodeSignature"
# 2.列出本地与代码签名相关的证书
security find-identity -v -p codesigning
# 3.对SDK进行签名,苹果视频https://developer.apple.com/videos/play/wwdc2023/10061
codesign --timestamp -v --sign "Your Certificate Name" </path/to/SDK.framework>
# 4.验证签名(可以看到相关签名信息)
codesign -dvvv </path/to/SDK.framework>
三、适配之后苹果会做哪些事
要求SDK提供隐私清单的作用是帮助开发者了解其如何使用隐私数据及相关API。开发者可以在Xcode 将第三方 SDK 中的隐私清单合并,然后导出一个 PDF 报告汇总,在向 App Store 提交审核时,填写隐私标签时可以参考报告。
在appstore填写的隐私标签最终会在用户的appstore下载页展示出来。
对于隐私文件中提交的需要说明原因api的使用情况是苹果审核的一个参考。自 3 月 13 日起,App 使用了需要声明批准原因的 API,但你未在 App 的隐私清单中提供批准原因,会通过电子邮件告知。 自 5 月 1 日起,你需要就你的 App 代码使用的所列 API 提供批准原因,才能将新 App 或更新 App 上传到 App Store Connect。
参考文章:
- iOS 17 隐私清单是什么? www.smaato.cn/blog/ios-17...
- 2024 春季 iOS 的隐私清单究竟是什么juejin.cn/post/731187...
- iOS17 隐私协议适配详解 juejin.cn/post/732973...
- 如何看待苹果隐私跟踪透明度框架? www.zhihu.com/question/45...