抄作业 | 苹果APP隐私新政简介与分析
一、SDK隐私清单及签名
需要注意:第三方SDK需要提供自己的隐私清单,记录它们收集的数据类型。APP的隐私清单无需涵盖APP所调用第三方SDK收集的数据。
隐私清单主要包含以下内容:
1、收集数据具体字段(颗粒度很细:联系信息、健康健身信息、金融信息、位置信息、敏感信息、用户信息、浏览、搜索信息、标识符、购买信息等);
2、收集目的类型(第三方广告、开发者广告营销、分析、产品个性化、APP功能实现及其他)。
若一个APP集成多个SDK的,Xcode工具会将SDK隐私清单进行合并,进而让开发者了解APP中SDK数据收集情况全貌。
SDK开发者对SDK进行签名,Xcode将进行验签,只有验签一致方可进行编译,确保SDK未在开发过程中被篡改。
(三)适用范围
以下是 App Store 上的 App 常用的 SDK。从 2024 年春季开始,当你在 App Store Connect 中提交包含这些 SDK 的新 App 时,或者当提交 App 更新并将列出的 SDK 之一添加为更新的一部分时,必须包含下列任何 SDK 的隐私清单。
在将
列出的 SDK 用作二进制文件依赖项的情况下,还需要包含签名。该要求适用于列出的 SDK 的任何版本,以及重新打包列表中的 SDK 的任何 SDK。1、苹果鼓励所有 SDK 采用隐私清单和签名功能。
2、集成下图中SDK的APP必须提交SDK隐私清单,都是全球范围内使用较多的SDK。
3、在将列出的SDK用作二进制依赖项的情况下,还需要SDK开发者签名。
二进制依赖项通常指的是预编译的代码库或框架,它们以编译完成的二进制形式(如.dll、.so、.a或.dylib文件)存在。
在应用程序编译时,这些二进制文件被直接链接到应用程序中,而不是源代码形式。当开发者将这些SDK作为已编译好的代码库或框架(二进制文件)加入到他们的应用中时,苹果将校验SDK开发者签名。
二、声明调用API原因
这将有助于确保 App 仅将这些 API 用于预期用途。
在这个流程中,你需要选择一个或多个能够准确反映你的 App 如何使用相应 API 的批准原因,并且你的 App 只能出于你选择的原因使用相应 API。
根据苹果官网文档[见注1]:
(一)规制行为
您的应用或第三方SDK在iOS、iPadOS、tvOS、visionOS或watchOS上使用某些API来提供核心功能时,可能存在被误用以尝试识别设备或用户的风险,这也被称为设备指纹识别。无论用户是否允许您的应用追踪,指纹识别都是不允许的。请描述您的应用或第三方SDK使用这些API的原因,并检查以确保它们仅用于预期的目的。这是为了遵守苹果的隐私政策并保护用户隐私。
从2023年秋季开始,如果向App Store Connect上传的应用使用了需要说明原因的API,但没有在其隐私清单文件中描述这些原因,苹果公司将会向您发送电子邮件通知。从2024年春季起,如果应用未在其隐私清单文件中描述对需要说明原因的API的使用,这些应用将不会被App Store Connect接受。
(二)声明独立要求
对于APP或第三方SDK使用的每个必要理由API类别,需要在APP或第三方SDK的隐私清单文件中说明使用API类别的原因。
如果在APP代码中使用了API,则需要在APP的隐私清单文件中报告。如果在第三方SDK的代码中使用了API,则需要在第三方SDK的隐私清单文件中报告。
第三方SDK不能依赖调用该SDK的APP的隐私清单文件或APP调用的其他第三方SDK的文件来声明其使用必要理由API的情况。
APP或第三方SDK必须声明一个或多个被允许的理由,这些理由应准确反映对每个API及其使用所得数据的使用。
APP及SDK只能出于声明的理由使用这些API及其产生的数据。这些声明的理由必须与向用户呈现的应用功能一致,不得使用API或衍生数据进行追踪。
(三)适用API类型
现阶段仅在调用一下五类API时,才需要进行声明:
1、File Timestamp APIs:用于获取文件的创建、修改或访问时间戳,有助于管理文件和数据同步。
2、System Boot Time APIs:提供系统启动时间信息,常用于计算系统运行时长或在系统重启后保持应用状态。
3、Disk Space APIs:用于检测磁盘空间,有助于管理存储资源,例如在空间不足时提醒用户或优化数据存储。
4、Active Keyboard APIs:用于检测当前激活的键盘,常用于提供上下文相关的输入体验或支持多语言输入。
5、User Defaults APIs:用于存储和检索用户的偏好设置,如应用配置或最近使用的项目,有助于提高用户体验和应用的个性化。
三、分析
(一)隐私清单
隐私清单类似于国内APP收集个人信息清单,只不过还有SDK版的,要求SDK开发者披露具体收集了哪些信息、收集目的为何,颗粒度很细,更加公开透明。
苹果强调SDK应自行负责记录和公开它们的数据收集实践,而APP隐私清单只需关注APP直接收集的数据。这有助于简化APP开发者的合规责任,同时确保第三方SDK的透明度和用户隐私的保护。
一般而言,调用三方SDK对于APP开发者而言就是黑盒,经常会发生收集字段与SDK隐私政策中披露不一致的情况,而APP管控手段通常也有限。
这次苹果作为平台方,对于SDK开发者提出要求,某种程度上也可以压实SDK的主体责任。
但如果是一些开源或免费的SDK的开发者就不搭理苹果,未能提供隐私清单和签名。APP开发者为了上架还要找到替代SDK,还是比较麻烦。
(二)API声明
设备指纹(Device Fingerprinting)是一种识别和追踪用户设备的技术。它通过收集设备的一系列信息(如硬件配置、操作系统、浏览器类型、字体、屏幕分辨率等)来创建一个独特的“指纹”。这个指纹可以用来识别和追踪用户在互联网上的行为,即使用户没有登录或直接提供身份信息。
调用API声明亦是提高透明度的举措,苹果作为硬件制造商可以通过代码审查、行为分析、用户反馈等多种方式确保APP和SDK的API使用与其向用户展示的功能一致,确保其不会使用这些API或衍生数据生成设备指纹,进行用户追踪。
此处对API的调用亦区分APP和SDK的主体责任,将一部分压力给到SDK开发者,以后如果部分调用API不被苹果系统接受,SDK也没有办法为所欲为了。
这两个策略中厘清APP和SDK的思路还是值得国内APP监管部门参考。
(三)一石二鸟——保护隐私,也保护广告收入
不可否认的是在整个ATT框架内依旧有一个相对明显的漏洞——安装在游戏和应用内
的各种SDK。论是开发者还是用户,都很难发现各种SDK中隐藏的隐私风险,或者说的更直白一点,绕过ATT框架收集用户信息的可能性。Morketing,公众号:Morketing苹果2024春季新政策,对第三方SDK重拳出击
像很多“友商”评价的一样:苹果对隐私保护的政策正在变得越来越严格,本质是为了增加自己的广告服务收入。
借着隐私保护这一无比正当的理由,禁止APP、SDK获取不该拿的信息或权限,确保只能通过苹果体系进行广告投放,保障广告收入稳定。
真是用户隐私保护与平台商业利益一致的典型场景。
四、参考资料
注1.“Describing data use in privacy manifests”,网址:https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_data_use_in_privacy_manifests(英文)。
注3.《关于 App Store 提交的隐私更新》(2023年12月7日),网址:https://developer.apple.com/cn/news/?id=r1henawx
注4.《即将发布的第三方 SDK 要求》,网址:https://developer.apple.com/cn/support/third-party-SDK-requirements/
注5.《需要声明原因的 API 列表现已推出》(2023年7月27日),网址:https://developer.apple.com/cn/news/?id=z6fu1dcu
声明:部分翻译工作及技术知识查询借助Chat GPT完成。
微信扫码关注该文公众号作者