iOS 隐私清单和三方SDK签名适配

一、背景

1. 苹果关于隐私更新的新闻-2023/06/05

推出了两项新功能: 隐私清单和SDK签名

2. 苹果关于隐私更新的新闻-2023/12/07

从 2024 年春季开始,如果你提交的新 App 或 App 更新添加了 App Store 上的 App 中常用的第三方 SDK,那么你需要包含相应 SDK 的隐私清单。将 SDK 用作二进制文件依赖项时,也需要包含签名。

3. 苹果关于隐私更新的新闻-2024/02/29

  1. 自 3 月 13 日起,App 使用了需要声明批准原因的 API,但你未在 App 的隐私清单中提供批准原因,会通过电子邮件告知。
  2. 自 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阿玮11 小时前
喜欢做马甲包的有福了~现在多了一招续费方式!
uni-app·app·apple
轻口味2 天前
Rokid Glasses 移动端控制应用开发初体验-助力业务创新
android·操作系统·app
铉铉这波能秀3 天前
如何在Android Studio中使用Gemini进行AI Coding
android·java·人工智能·ai·kotlin·app·android studio
Mart!nHu4 天前
OpenHarmony4.0 OTA升级Demo
app·openharmony·ota本地升级
关键帧Keyframe4 天前
AI 换脸不用上传服务器也行?FaceXSwap 这款 App 在手机上离线处理,效果却比云端还强!视频、GIF 动图、照片还都支持!
app·aigc·sora
iOS阿玮6 天前
分享一个4.3(a)瓜,一个操作毁了公司3个月的成果。
uni-app·app·apple
撬动未来的支点6 天前
算起计算器APP发布
app
前行的小黑炭6 天前
Android Compose :初步了解一下生命周期,对比原生android
android·kotlin·app
ZFJ_张福杰7 天前
【Flutter】APP的数据安全(基于Flutter 交易所APP的总结)
flutter·web3·区块链·app·交易所
前行的小黑炭8 天前
Compose页面切换的几种方式:Navigation、NavigationBar+HorizontalPager,会导致LaunchedEffect执行?
android·kotlin·app