今天上传应用发现谈了一大堆警告,对于警告洁癖的我表示非常的震惊。
基本上就是因为缺少隐私描述,但是我根本就没用第三方SDK啊,仔细一看发现是这两种:
NSPrivacyAccessedAPICategoryUserDefaults
NSPrivacyAccessedAPICategoryFileTimestamp
这两个确实用了,一个是用于存储用户的配置,一个是获取文件的时间戳。Apple要求说明这些行为是否会将数据与第三方共享,具体用于做什么。
那我们就来说明一下就好了。
添加隐私文件:
添加App Privacy文件:
Targets勾选所有的项目:
这样我们就添加成功一个隐私文件:
添加隐私说明选项
添加隐私类型Privacy Accessed API Types:
在里面的item0中添加Privacy Accessed API Type和Privacy Accessed API Reasons
Privacy Accessed API Type是用于告诉Apple这个API是什么API。
Privacy Accessed API Reasons是告诉Apple你用这个API拿来干什么了。
我的例子中一个是userdefaults,一个是时间戳。那我们添加一下。
将邮件中的API类型粘贴到里面。
然后我们在API Reasons中点击右侧的箭头,选择你将这个API用在哪里了。
如果用的不止一项,可以再在Privacy Accessed API Reasons中继续添加新的item。
这是我填写的例子。
同理,我们userdefaults处理完了之后,我们还可以填写新的文件时间戳类型。
下面是最小示例:
如果涉及到第三方SDK,还需要添加更多的用途。
具体原因如何选择:
文件时间戳
在您的 NSPrivacyAccessedAPITypeReasons 数组中,提供以下列表中的相关值。
DDA9.1
声明此原因是为了向使用该设备的人显示文件时间戳。出于此原因访问的信息或任何派生信息不得发送至设备外。
C617.1
声明此原因是为了访问应用容器、应用组容器或应用的 CloudKit 容器内文件的时间戳、大小或其他元数据。
3B52.1
声明此原因是为了访问用户特别授权访问的文件或目录的时间戳、大小或其他元数据,例如使用文档选择器视图控制器。
0A2A.1
如果您的第三方 SDK 为应用使用的文件时间戳 API 提供了一个封装函数,并且仅在应用调用您的封装函数时访问文件时间戳 API,请声明此原因。只有第三方 SDK 可以声明此原因。如果您的第三方 SDK 主要是为了封装必需的原因 API 而创建的,则不得声明此原因。出于此原因访问的信息或任何派生信息不得用于您的第三方 SDK 自身的目的或由您的第三方 SDK 发送至设备外。
UserDefaults
在您的 NSPrivacyAccessedAPITypeReasons 数组中,提供以下列表中的相关值。
CA92.1
声明此原因以访问用户默认设置来读写仅对应用本身可访问的信息。此原因不允许读取其他应用或系统编写的信息,或写入可被其他应用访问的信息。
1C8F.1
声明此原因以访问用户默认设置来读写仅对相同应用组中的应用、应用扩展和 App Clips 可访问的信息。此原因不允许读取不同应用组中的应用、应用扩展或 App Clips 或系统编写的信息。如果系统因为您请求的域中没有相应的键而尝试读取您的应用组中的应用、应用扩展或 App Clips 编写的信息时提供了来自全局域的信息,您的应用不承担责任。此原因也不允许写入可被不同应用组中的应用、应用扩展或 App Clips 访问的信息。
C56D.1
如果您的第三方 SDK 为应用使用的用户默认设置 API 提供了一个封装函数,并且仅在应用调用您的封装函数时访问用户默认设置 API,请声明此原因。只有第三方 SDK 可以声明此原因。如果您的第三方 SDK 主要是为了封装必需的原因 API 而创建的,则不得声明此原因。出于此原因访问的信息或任何派生信息不得用于您的第三方 SDK 自身的目的或由您的第三方 SDK 发送至设备外。
AC6B.1
声明此原因以访问用户默认设置来读取 com.apple.configuration.managed 键以检索由 MDM 设置的管理应用配置,或设置 com.apple.feedback.managed 键以存储反馈信息,以便通过 MDM 查询,如 Apple Mobile Device Management Protocol Reference 文档中所述。