• 如何为iOS应用创建隐私清单PrivacyInfo.xcprivacy
  • 发布于 1个月前
  • 144 热度
    0 评论
前言
在去年的 WWDC 上,苹果宣布进一步管控 App 隐私,从今年 5 月 1 日开始,上架的 App 都必须声明新的隐私清单。今天来讲讲具体应该如何做。

PrivacyInfo.xcprivacy
苹果要求,应用和第三方 SDK(XCFrameworks、Swift 包或 Xcode 项目的形式分发),如果有用到涉及隐私的 API 接口,必须包含名为 PrivacyInfo.xcprivacy 的隐私清单文件,来记录相关的隐私信息。

创建隐私清单 PrivacyInfo.xcprivacy
若要在 Xcode 中将隐私清单添加到您的 App 或第三方 SDK,请按照以下步骤操作:
1、打开 Xcode,选择 File > New > App Privacy

2、点击下一步,选择 Target(这一步很重要,一定不要忘了)

3、点击创建按钮
名称使用默认的就可以了,创建完成后,项目文件列表中会出现一个名为 PrivacyInfo.xcprivacy 的文件:

编辑文件
点击 PrivacyInfo.xcprivacy 文件,会发现它是一个 plist 文件,此时就可以根据需要填写这个文件了。
在这个属性列表文件的顶层,将以下 Key 添加到字典中:
NSPrivacyTracking:布尔值,用于指示应用或第三方 SDK 是否使用应用跟踪透明度框架下定义的数据进行跟踪。
NSPrivacyTrackingDomains:一个字符串数组,其中需要列出你的应用或第三方 SDK 连接到的参与跟踪的互联网域。
NSPrivacyCollectedDataTypes:描述应用或第三方 SDK 收集的数据类型的字典数组。
NSPrivacyAccessedAPITypes:字典类型,用于描述你的应用或第三方 SDK 访问的 API 类型,这些 API 类型已被指定为需要访问理由的 API。
编辑完成后大概是这样子:


如果你是 SDK 的提供方
如果你在开发一个 SDK,那么你需要在你的 SDK 中声明这个文件,方法是类似的,也是创建一个 PrivacyInfo.xcprivacy 文件,并最终打包到你的包里提供出去。

这里分几种情况:
1、如果你是源码分发,比如 CocoaPods,那么需要在 podspec 文件将这个 PrivacyInfo.xcprivacy 文件放到 resource_bundles 中:
类似这样:
Pod::Spec.new do |s|
  s.name = '你的库名称'
  s.version = '1.0.0'
 // 堆代码 duidaima.com
 // 中间内容省略...
  s.resource_bundles = {'你的库名称' => ['Source/PrivacyInfo.xcprivacy']}
end
2、如果你的库通过 SPM 分发,也需要将 PrivacyInfo.xcprivacy 文件放到 Package.swift 文件的 resources 中:
类似这样:
Package(name: "你的库名称",
            platforms: [.iOS(.v12)],
            targets: [.target(name: "你的库名称",
                                  path: "Source",
                                  resources: [.process("PrivacyInfo.xcprivacy")])
                                  /* 其他配置省略...*/
                                )
3、如果你的库通过 framework 分发,则也需要用相同的办法在对应的 Target 下建立 PrivacyInfo.xcprivacy 文件,然后打包到 framework 中。

如果你使用的是第三方库
1、如果你使用的是 CocoaPods 库,目前主流的第三方库基本上都已经添加了这个文件,只需要升级版本即可。
2、使用了不再维护的 CocoaPods 库,有些库很早就不维护了,如果你还在使用,那么你只能自己 fork 出来添加 PrivacyInfo.xcprivacy 文件。
3、使用了二进制库,如果你使用的是非开源的二进制库,那么只能联系这个库的开发者,让其添加 PrivacyInfo.xcprivacy 文件。

一种更为简单的方法
讲了很多,可能很多人还是一头雾水,不知道如何正确填写。一方面苹果的文档写的不够详细,信息给的也不够多,另一方面可能大家也不清楚项目中到底使用了哪些需要申报的 API。看到很多大牛开发了一些脚本,方便我们扫描项目中都使用了哪些需要申明的 API,大家可以去网上搜索一下,这里我介绍其中一个,update_privacy_info。

这是一个 python 写的脚本,通过静态代码扫描的方式来为我们监测 App 中使用了哪些需要申明的 API,然后还会自动帮我们创建 PrivacyInfo.xcprivacy 文件,相当好用。
用户评论