一、背景

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来创立,文件中的内容如图

iOS 隐私清单和三方SDK签名适配
创立之后可以根据项目状况填写key对应的值,填写时从已有选项中选择。

  • 隐私清单文件中键值对阐明
Key 阐明
NSPrivacyTracking 布尔值,指示您的应用程序或第三方SDK是否运用应用程序盯梢透明度结构下定义的数据进行盯梢。官方文档
NSPrivacyTrackingDomains 一组字符串,列出您的应用程序或第三方SDK连接到的参加盯梢的互联网域。如果用户未通过应用程序盯梢透明度结构授予盯梢权限,则对这些域的网络恳求将失利,您的应用程序将收到错误. 如果将NSPrivacyTracking设置为true,则需求在NSPrivaceTrackingDomains中至少供给一个internet域;否则,您可以供给零个或多个域。
NSPrivacyCollectedDataTypes 一组字典,用于描绘应用程序或第三方SDK搜集的数据类型。有关要在字典中运用的键和值的信息,请参阅描绘隐私清单中的数据运用。
NSPrivacyAccessedAPITypes 运用了苹果需求阐明原因的api时需求填写,请参阅描绘所需原因API的运用。
  • NSPrivacyCollectedDataTypes的示例图

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

  • 需求阐明原因的API
  • File timestamp APIs
  • System boot time APIs
  • Disk space APIs
  • Active keyboard APIs
  • User defaults APIs
  • 示例图
    iOS 隐私清单和三方SDK签名适配

2.3 SDK 签名

关于供给二进制版别的三方SDK,需求第三方供给包括签名的SDK。当你在 App 中采用第三方 SDK 的新版别时,Xcode 将验证它是否由同一开发者签名,然后提高软件供应链的完整性。

签名其实分 Apple Developer Program 签名和自签名。经过签名认证后的 SDK ,在 Xcode15 会显示对应的 Signature 信息,如果一旦发现本次前面和上次不一致,那么Xcode 就会让编译失利并弹出警告。

iOS 隐私清单和三方SDK签名适配
Apple 鼓舞所有 SDK 运用签名, 如果是在苹果三方SDK列表中的作为二进制依靠项,需求供给签名。

2.4 SDK 签名做法

这儿罗列一下相关命令行

# 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 提交审阅时,填写隐私标签时可以参阅报告。

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

在appstore填写的隐私标签最终会在用户的appstore下载页展示出来。

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

关于隐私文件中提交的需求阐明原因api的运用状况是苹果审阅的一个参阅。自 3 月 13 日起,App 运用了需求声明同意原因的 API,但你未在 App 的隐私清单中供给同意原因,会通过电子邮件奉告。 自 5 月 1 日起,你需求就你的 App 代码运用的所列 API 供给同意原因,才能将新 App 或更新 App 上传到 App Store Connect。

参阅文章: