前言
在上架app时,打包上传至app store connect一切准备就绪提审后直接提示二进制文件无效,百思不得其解, 后经查资料得知在去年的 WWDC 上,苹果对 App 隐私做了一些调整,上架的 App 都必须声明新的隐私清单,否则就会出现我之前的这种状况。
接下来说一下这个问题该如何做吧。
PrivacyInfo.xcprivacy
苹果要求,应用和第三方 SDK(XCFrameworks、Swift 包或 Xcode 项目的形式分发),如果有用到涉及隐私的 API 接口,必须包含名为 PrivacyInfo.xcprivacy 的隐私清单文件,来记录相关的隐私信息。
创建隐私清单 PrivacyInfo.xcprivacy
1、打开 Xcode,选择 NewFile > App Privacy
2、点击下一步,选择 Target(这一步很重要,一定不要忘了**)
3、点击创建
使用默认的名字就可以,创建完成后,项目文件列表中会出现一个名为 PrivacyInfo.xcprivacy 的文件:
编辑文件
选中 PrivacyInfo.xcprivacy 文件,你会发现它其实是一个 plist 文件
点击+添加key值发现有以下几个
- Privacy Tracking Enabled:布尔值,用于指示应用或第三方 SDK 是否使用应用跟踪透明度框架下定义的数据进行跟踪。
- Privacy Tracking Domains:一个字符串数组,其中需要列出你的应用或第三方 SDK 连接到的参与跟踪的互联网域。
- Privacy Nutrition Label Types:一个字典数组描述应用或第三方 SDK 收集的用户数据类型、原因和使用情况。
- Privacy Accessed API Types:字典类型,用于描述你的应用或第三方 SDK 访问的 API 类型,这些 API 类型已被指定为需要访问理由的 API。
此时就可以根据需要填写这个文件了。
编辑完成后大概是这样子:
如果使用了第三方库
1、如果使用的是 CocoaPods 库,目前主流的第三方库基本上都已经添加了这个文件,只需要升级版本然后签名即可。
2、使用了不再维护的 CocoaPods 库,有些库很早就不维护了,如果还在继续使用的话就需要自己打包添加 PrivacyInfo.xcprivacy 文件了。
一种更为简单的方法
虽然查了很多资料但是这个文件还是不怎么会填写,因为苹果的文档不够详细而且大家可能也不清楚项目里边哪里用了需要申报的api等。
但是在查找资料的过程中看到了很多大牛开发了脚本,方便我们扫描项目中都使用了哪些需要申明的 API,然后配合一些工具就可以完善我们的 PrivacyInfo.xcprivacy 文件了。下面介绍一下我使用的两个工具。
1、update_privacy_info
我使用了update_privacy_info,这是一个 python 写的脚本,通过静态代码扫描的方式来为我们监测 App 中使用了哪些需要申明的 API,然后还会自动帮我们创建 PrivacyInfo.xcprivacy 文件,相当好用。其他的大家可以去网上搜索一下了解看一下。
1、一个在线平台
www.privacymanifest.dev/,它可以根据你的选择,为你生成隐私清单的配置文件。