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。

参考文章:

相关推荐
SuperherRo8 天前
基础入门-APP应用&微信小程序&原生态开发&H5+Vue技术&WEB封装打包&反编译抓包点
小程序·app·反编译·原生态·web封装·h5+vue
kim56599 天前
数独游戏app制作拆解(之三)——数字候选区实现
游戏·app·数独·android stufio
什么都什么1 个月前
YonBuilder移动开发鸿蒙版本编译教程
javascript·app·移动开发·harmonyos·yonbuilder·纯血鸿蒙·apicloud
applebomb1 个月前
【uni-app多端】修复stmopjs下plus-websocket无心跳的问题
websocket·uni-app·app·心跳·stomp·plus-websocket
图王大胜1 个月前
Android Framework AMS(17)APP 异常Crash处理流程解读
android·app·异常处理·ams·crash·binderdied·讣告
veteranJayBrother2 个月前
uniapp实现书架
微信小程序·uni-app·app·书架
胡西风_foxww2 个月前
高考相关 APP 案例分享
算法·app·志愿·高考
YesPMP252 个月前
短剧小程序,打造专属短剧观看平台
小程序·app·html5·平台·短剧·影视
飞飞_圆代码2 个月前
iOS安卓渠道归因分析在App推广矩阵中的场景应用
android·ios·app
Amd7942 个月前
Nuxt.js 应用中的 app:resolve 事件钩子详解
中间件·app·生命周期·nuxt·插件·resolve·钩子