iOS17 隐私协议适配详解

打印 上一主题 下一主题

主题 782|帖子 782|积分 2346

1. 背景

        网上搜了很多文章,总算有点头绪了。着实隐私清单最后做出来就是一个plist文件。找了几个常用三方已经配好的看了看,比着做就好了。

WWDC23 中关于隐私部门的更新(WWDC23 隐私更新官网),其中提到了第三方 SDK 的隐私清单和签名,并且要求开辟者自 2024 年春季开始,新发布的 app 或者 app 更新中携带的第三方 SDK 须要提供隐私清单,如果 SDK 是以二进制形式依赖的话,则同时须要提供签名。。

当你准备分发 App 时,Xcode 会将 App 使用的所有第三方 SDK 的隐私清单归并为一个简朴易用的报告。
这个报告内容全面,总结了 App 中的所有第三方 SDK,让你能够更轻松地创建更准确的隐私标签。
因此嵌入 App 的 SDK 和三方库都须要包罗 PrivacyInfo.xcprivacy 。


二、 下面开始创建 隐私清单  (privacy manifest)的创建

  • Xcode升级到Xcode15版本及以上
  • 新建文件 Cmd + N
  • 选择 APP Privacy 选项(往下滑到Resource选项里)
  • privacy文件如下图.


privacy文件的源代码如下。在xcode里选择open as ——> souce code显示如下。 open as :ASCII Property List如上图 显示为plist格式。这个是腾讯即时通讯的清单 open as code如下
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5.     <key>NSPrivacyTracking</key>
  6.     <false/>
  7.     <key>NSPrivacyCollectedDataTypes</key>
  8.     <array/>
  9.     <key>NSPrivacyTrackingDomains</key>
  10.     <array/>
  11.     <key>NSPrivacyAccessedAPITypes</key>
  12.     <array>
  13.         <dict>
  14.             <key>NSPrivacyAccessedAPIType</key>
  15.             <string>NSPrivacyAccessedAPICategorySystemBootTime</string>
  16.             <key>NSPrivacyAccessedAPITypeReasons</key>
  17.             <array>
  18.                 <string>35F9.1</string>
  19.             </array>
  20.         </dict>
  21.         <dict>
  22.             <key>NSPrivacyAccessedAPIType</key>
  23.             <string>NSPrivacyAccessedAPICategoryDiskSpace</string>
  24.             <key>NSPrivacyAccessedAPITypeReasons</key>
  25.             <array>
  26.                 <string>E174.1</string>
  27.             </array>
  28.         </dict>
  29.         <dict>
  30.             <key>NSPrivacyAccessedAPIType</key>
  31.             <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
  32.             <key>NSPrivacyAccessedAPITypeReasons</key>
  33.             <array>
  34.                 <string>C617.1</string>
  35.             </array>
  36.         </dict>
  37.         <dict>
  38.             <key>NSPrivacyAccessedAPIType</key>
  39.             <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
  40.             <key>NSPrivacyAccessedAPITypeReasons</key>
  41.             <array>
  42.                 <string>CA92.1</string>
  43.             </array>
  44.         </dict>
  45.     </array>
  46. </dict>
  47. </plist>
复制代码

对应的plist展示如下



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


  • File timestamp APIs
  • System boot time APIs
  • Disk space APIs
  • Active keyboard APIs
  • User defaults APIs
具体列表可查察 Apple 官网说明:查察api名称和使用的理由Describing use of required reason API | Apple Developer Documentation
我们根据自己app的环境添加,上面示例的代码中 ,使用的API,比如我们可能只用了NSUSerdefaluts ,所以只添加这个就行,其他的自己根据官网酌量添加api名称和使用原因。

下面咱们看几个第三方的隐私清单是怎么处理的。比如 SDWebImage  ,SD的代码如下,
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5.         <key>NSPrivacyTracking</key>
  6.         <false/>
  7.         <key>NSPrivacyCollectedDataTypes</key>
  8.         <array/>
  9.         <key>NSPrivacyTrackingDomains</key>
  10.         <array/>
  11.         <key>NSPrivacyAccessedAPITypes</key>
  12.         <array>
  13.                 <dict>
  14.                         <key>NSPrivacyAccessedAPIType</key>
  15.                         <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
  16.                         <key>NSPrivacyAccessedAPITypeReasons</key>
  17.                         <array>
  18.                                 <string>C617.1</string>
  19.                         </array>
  20.                 </dict>
  21.         </array>
  22. </dict>
  23. </plist>
复制代码
plist长如许,看SD它就加了一个 File Timestamp



使用原因苹果官网的示例图

 签名我们不用管。因为如果 SDK 是以二进制形式依赖的话,则同时须要提供签名。
参考文章,可以看融云和腾讯即时通讯的添加步调即时通讯 IM 苹果隐私策略:PrivacyInfo.xcprivacy-协议与认证-文档中央-腾讯云
【告急通知】关于 2024 春季 iOS 隐私清单的通知 - iOS - 融云开辟者帮助中央

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

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

农妇山泉一亩田

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表