iOS 审核 5月1日开始 Privacy manifest files 【隐私清单】

打印 上一主题 下一主题

主题 997|帖子 997|积分 3001


If you upload an app to App Store Connect that uses required reason API without describing the reason in its privacy manifest file, Apple sends you an email reminding you to add the reason to the app’s privacy manifest. Starting May 1, 2024, apps that don’t describe their use of required reason API in their privacy manifest file aren’t accepted by App Store Connect.
如果你上传到app Store Connect的应用程序使用了须要的原因API,而没有在其隐私清单文件中描述原因,苹果会向你发送电子邮件,提醒你将原因添加到应用程序的隐私清单中。从2024年5月1日开始,未在其隐私清单文件中描述其使用所需原因API的应用程序将不被App Store Connect接受。
提醒邮件截图:

解决步调

  • 第三方SDK,根据苹果列出的必要添加隐私清单的三方SDK,检察项目中使用了哪些SDK,逐一适配
  • 主工程新增隐私清单文件,排查使用的API,配置隐私清单文件
一、第三方 SDK



  • 苹果官方列出的必要隐私清单和署名的 SDK,大部分SDK目前作者都添加了Privacy,只必要更新一下SDK就可以啦。
  • 若SDK作者没有维护了,就本身往SDK中添加隐私清单,或者将SDK以手动导入的方式,与主工程共用隐私清单文件
前去检察苹果官方列出的必要添加隐私清单文件的三方SDK

二、项目新增隐私清单文件

2.1 创建privacy文件

创建PrivacyInfo.xcprivacy
选中当前的项目,Command + N,搜索privacy -> 选择App Privacy,输入名称PrivacyInfo.xcprivacy,如下图,选择要添加的Target,然后点击完成。
官方文档创建步调

PrivacyInfo.xcprivacy文件放置位置


  • 这个没有明确要求,一般是放在Resources目次下

PrivacyInfo.xcprivacy文件

key说明Privacy Nutrition Label Types隐私营养标签,添加的内容会在打包后天生的PDF中Privacy Accessed API Types使用的隐私API及原因 describing_use_of_required_reason_apiPrivacy Tracking Enabled布尔值,指示您的应用程序或第三方SDK是否使用应用程序跟踪透明度框架下定义的数据进行跟踪。user-privacy-and-data-usePrivacy Tracking Domains一组字符串,列出您的应用程序或第三方SDK连接到的到场跟踪的互联网域。如果用户未通过应用程序跟踪透明度框架授予跟踪权限,则对这些域的网络请求将失败,您的应用程序将收到错误. 如果将NSPrivacyTracking设置为true,则必要在NSPrivaceTrackingDomains中至少提供一个internet域;否则,您可以提供零个或多个域。 2.2 怎样填写privacy文件

Privacy Nutrition Label Types



  • 你正在网络的数据类型
  • 是否与用户身份相关联
  • 是用于应用或SDK进行追踪
  • 以及你网络数据的原因

按照这个来填写

Privacy Accessed API Types

访问的API类型


  • 按照自身App 使用的API 对照添加

怎样定位项目使用的API类型
根据上传App Store 收到的苹果提醒邮件,然后在苹果官方API文档去搜索选择填写的类型

苹果文档列出的访问API类型

Describing use of required reason API
File timestamp APIs
以下用于访问文件时间戳的API必要使用原因。使用stringNSPrivacyAccessed作为NSPrivacy字典中NSPrivacy键的值。
  1. creationDate
  2. modificationDate
  3. fileModificationDate
  4. contentModificationDateKey
  5. creationDateKey
  6. getattrlist(_:_:_:_:_:)
  7. getattrlistbulk(_:_:_:_:_:)
  8. fgetattrlist(_:_:_:_:_:)
  9. stat
  10. fstat(_:_:)
  11. fstatat(_:_:_:_:)
  12. lstat(_:_:)
  13. getattrlistat(_:_:_:_:_:_:)
复制代码
在您的NSPrivacy数组中,提供此列表中的相关值。


  • DDA9.1
    声明此原因,向使用装备的人显示文件时间戳。
    出于这个原因访问的信息或任何衍生信息不得从装备外发送。
  • C617.1
    声明此原因以访问应用程序容器、应用程序组容器或应用程序的CloudKit容器内文件的时间戳、大小或其他元数据。
  • 3B52.1
    声明此原因以访问用户特殊授予访问权限的文件或目次的时间戳、大小或其他元数据,比方使用文档选择器视图控制器。
  • 0A2A.1
    如果您的第三方SDK正在围绕文件时间戳API提供包装函数供应用程序使用,而且您仅在应用程序调用包装函数时访问文件时间戳API,请声明此原因。这个原因只能由第三方SDK声明。如果您的第三方SDK主要是为了包装所需的原因API而创建的,则可能不会声明此原因。
    出于这个原因访问的信息或任何衍生信息不得用于您的第三方SDK自身目的,也不得由您的第三方SDK从装备外发送。
System boot time APIs
以下用于访问系统启动时间的 API 必要使用理由。使用该字符串作为字典中键的值。


  • systemUptime
  • mach_absolute_time()
    在您的数组中,提供下面列表中的相关值。NSPrivacyAccessedAPITypeReasons
  • 35F9.1
    声明此原因以访问系统启动时间,以便测量应用程序内发生的变乱之间经过的时间量或执行计算以启用计时器。
    出于此原因访问的信息或任何派生信息可能不会发送到装备外。有关应用程序内发生的变乱之间经过的时间量的信息有一个例外,该信息可能会发送到装备外。
  • 8FFB.1
    声明此原因以访问系统启动时间,以计算应用程序内发生的变乱的绝对时间戳,比方与UIKit或AVFAudio框架相关的变乱。
    您的应用内发生的变乱的绝对时间戳可能会发送到装备外。出于此原因访问的系统启动时间或从系统启动时间派生的任何其他信息可能不会发送到装备外。
  • 3D61.1
    声明此原因以在使用装备的人选择提交的可选错误陈诉中包含系统启动时间信息。系统启动时间信息必须作为陈诉的一部分显着地向人员显示。
    仅在用户肯定选择提交包括系统启动时间信息的特定错误陈诉之后,而且仅出于观察或响应错误陈诉的目的,才可以将出于此原因访问的信息或任何派生信息发送到装备外。
Disk space APIs
以下用于访问可用磁盘空间的 API 必要使用原因。使用该字符串作为字典中键的值。
  1. - volumeAvailableCapacityKey
  2. - volumeAvailableCapacityForImportantUsageKey
  3. - volumeAvailableCapacityForOpportunisticUsageKey
  4. - volumeTotalCapacityKey
  5. - systemFreeSize
  6. - systemSize
  7. - statfs(_:_:)
  8. - statvfs(_:_:)
  9. - fstatfs(_:_:)
  10. - fstatvfs(_:_:)
  11. - getattrlist(_:_:_:_:_:)
  12. - fgetattrlist(_:_:_:_:_:)
  13. - getattrlistat(_:_:_:_:_:_:)
复制代码
在您的数组中,提供下面列表中的相关值。NSPrivacyAccessedAPITypeReasons


  • 85F4.1
    声明此原因以向使用该装备的人员显示磁盘空间信息。磁盘空间可以以信息单元(比方字节)或与媒体类型结合的时间单元(比方高清视频的分钟)来显示。
    出于此原因访问的信息或任何派生信息可能不会发送到装备外。有一个例外,答应应用程序通过本地网络将磁盘空间信息发送到同一个人操作的另一台装备,仅用于显示该装备上的磁盘空间信息;此例外仅适用于用户明确答应发送磁盘空间信息的情况,而且该信息不得通过 Internet 发送。
  • E174.1
    声明此原因是为了查抄是否有充足的磁盘空间来写入文件,或者查抄磁盘空间是否不敷,以便应用程序可以在磁盘空间不敷时删除文件。应用程序必须根据磁盘空间以用户可观察到的方式表现不同。
    出于此原因访问的信息或任何派生信息可能不会发送到装备外。有一个例外,答应应用程序在磁盘空间不敷时克制从服务器下载文件。
  • 7D9E.1
    声明此原因以在使用装备的人员选择提交的可选错误陈诉中包含磁盘空间信息。磁盘空间信息必须作为陈诉的一部分突出地显示给相关人员。
    仅在用户明确选择提交包括磁盘空间信息的特定错误陈诉之后,而且仅出于观察或响应错误陈诉的目的,因此访问的信息或任何派生信息才可以发送到装备外。
  • B728.1
    如果您的应用程序是健康研究应用程序,而且您访问此 API 种别来检测并关照研究到场者磁盘空间不敷影响研究数据网络,请声明此原因。
    您的应用程序必须符合应用程序商店审核指南§5.1.3。除了提供有关健康研究的信息并答应人们到场健康研究之外,您的应用程序不得提供任何其他功能。
Active keyboard APIs
以下用于访问活动键盘列表的 API 必要使用原因。使用该字符串作为字典中键的值。


  • activeInputModes
    在您的数组中,提供下面列表中的相关值。NSPrivacyAccessedAPITypeReasons
  • 3EC4.1
    如果您的应用程序是自定义键盘应用程序,而且您访问此 API 种别以确定装备上处于活动状态的键盘,请声明此原因。
    为用户提供系统范围的自定义键盘必须是应用程序的主要功能。
    出于此原因访问的信息或任何派生信息可能不会发送到装备外。
  • 54BD.1
    声明此原因以访问活动键盘信息,以便向使用该装备的人员呈现正确的自定义用户界面。应用程序必须具有用于输入或编辑文本的文本字段,而且必须以用户可观察到的方式根据活动键盘接纳不同的举动。
    出于此原因访问的信息或任何派生信息可能不会发送到装备外。
User defaults APIs
以下用于访问用户默认值的 API 必要使用原因。使用该字符串作为字典中键的值。


  • UserDefaults
    在您的数组中,提供下面列表中的相关值。NSPrivacyAccessedAPITypeReasons
  • CA92.1
    声明此原因以访问用户默认读取和写入只能由应用程序本身访问的信息。
    此原因不答应读取其他应用程序或系统写入的信息,或写入可由其他应用程序访问的信息。
  • 1C8F.1
    声明此原因以访问用户默认值以读取和写入仅可由与应用程序本身属于同一应用程序组的成员的应用程序、应用程序扩展和应用程序剪辑访问的信息。
    此原因不答应读取由同一应用程序组外部的应用程序、应用程序扩展或应用程序剪辑或系统写入的信息。如果系统提供来自全局域的信息,则您的应用程序不承担责任,因为当您的应用程序尝试读取应用程序的应用程序组中的应用程序、应用程序扩展或应用程序剪辑写入的信息时,您请求的域中不存在密钥。
    此原因也不答应写入可由同一应用程序组外部的应用程序、应用程序扩展或应用程序剪辑访问的信息。
  • C56D.1
    如果您的第三方 SDK 围绕用户默认 API 提供包装函数供应用程序使用,而且您仅在应用程序调用您的包装函数时才访问用户默认 API,请声明此原因。此原因只能由第三方 SDK 声明。如果您的第三方 SDK 主要是为了包装所需的原因 API 而创建的,则可能不会声明此原因。
    出于此原因访问的信息或任何派生信息不得用于第三方 SDK 自身的目的,也不得由第三方 SDK 发送至装备外。
  • AC6B.1
    声明此原因以访问用户默认读取密钥以检索 MDM 设置的托管应用程序配置,或设置密钥以存储要通过 MDM 查询的反馈信息,如 Apple 移动装备管理协议参考文档中所述。
Privacy Tracking Enabled

你必须声明你的应用(或此中使用的第三方SDK)是否使用应用追踪透明度框架定义的数据进行追踪。如果是,则必须将 NSPrivacyTracking 设置为 true。
苹果将追踪定义为将你网络的数据与其他公司网络的其他用户或装备数据相关联。
定义如下:
追踪是指将从你的应用程序网络的用户或装备数据与从其他公司的应用程序、网站或离线资产网络的用户或装备数据相关联的举动,用于有针对性的广告或广告测量目的。追踪还指与数据署理共享用户或装备数据。 苹果提供了以下追踪示例:


  • 广告的举动定位
  • 与数据署理共享位置或电子邮件
  • 创建和共享受众
  • 装备图形天生
    苹果提供了一些不被视为追踪的数据网络示例:
  • 数据保留在装备上
  • 仅用于敲诈检测/安全的数据
  • 用于信用评分的数据 据推测,还有更多类型的数据网络未被定义为追踪,只要你不将应用或SDK网络的数据与其他公司的数据相关联,或者不将你的数据出售给数据署理。
Privacy Tracking Domains

首先列出要通过 NSPrivacyTrackingDomains 数组向其发送数据的域。这只是你的应用或SDK连接到的网址列表,有助于追踪。
重点:
如果你连接到追踪域,但用户尚未通过应用追踪透明度授予追踪权限,苹果将克制对这些网址的任何调用。
如果用户未通过应用追踪透明度框架授予追踪权限,则对这些域的网络请求将失败,而且你的应用会收到错误。
由于在这里填的这些域,如果用户没有授权,那么这个域的网络请求将失败,稳妥起见这里先不填写域,先如许处理 提审看看情况了来。

总结

按照上面的步调处理后,我上传appStore 提审,现在没有收到苹果关于隐私清单的提醒邮件了,暂时就先如许配置,不知道各人是怎么填写 Privacy Tracking Enabled 和 Privacy Tracking Domains 这两个类型的呢?
留意: 在选择原因的时间,必须要选择对应类型下的原因

感谢您的阅读和到场,HH思天真愿与您一起在技能的门路上不停探索。如果您喜欢这篇文章,不妨留下您宝贵的赞!如果您对文章有任何疑问或建议,欢迎在批评区留言,我会第一时间处理,您的支持是我前行的动力,愿我们都能成为更好的本身!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

泉缘泉

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表