概要:Apple在2023年的全球开发者大会(WWDC23)上发布了最新的隐私清单(Privacy Manifest)政策。Privacy Manifest推出后,应用开发者可以更清晰地阐明其应用的隐私保护措施。AppsFlyer已针对AppsFlyer SDK创建了隐私清单,详情请见下文说明。
背景
隐私清单(Privacy Manifest)上线后,应用开发者可以记录其通过相关应用独立收集或通过第三方(如该应用中安装的第三方SDK)收集的数据类别。有了这些信息,应用开发者就能通过面向用户的隐私标签(Nutrition Labels)等方式,更准确地传达其应用中的隐私保护措施。
很多情况下,应用开发者并不了解第三方SDK所收集的数据或具体某个SDK使用数据的目的。第三方SDK能通过隐私清单(Privacy Manifest)便捷地向相关应用开发者传达此信息,帮助开发者创建准确的隐私标签(Nutrition Labels)。
什么是隐私标签(Nutrition Labels)?
隐私标签(Nutrition Labels)以简洁明了、便于理解的呈现方式展示具体应用所采取的隐私保护措施。这样,终端用户就能更清晰地了解相关应用所收集的数据及其用途。如需进一步了解隐私标签,请参考此文档。
AppsFlyer隐私清单的内容
重要提示!
除了AppsFlyer SDK之外,您还需要明确您自己的数据收集情况、必须声明使用原因的API(Required Reasons API)、以及您的应用及其他SDK对数据的使用情况,并通过隐私标签(Nutrition Labels)传达这些信息。
AppsFlyer SDK 6.14.0中带有AppsFlyer隐私清单,其中包含以下信息;
- 数据使用情况
- Required Reason API(必须声明使用原因的API)
- 跟踪域名
数据使用情况
Apple要求应用开发者和SDK开发者记录其收集的数据类别,以及相关应用或第三方SDK收集此类数据的原因。
应用开发者可以使用Xcode创建一个隐私报告,在其中总结有关其数据收集的信息。
下表列出了AppsFlyer SDK收集的数据类型,这些信息也包含在我们的隐私清单中。
注意
下表所列的信息以AppsFlyer软件的默认配置为前提。应用开发者有责任自行调整其隐私清单的内容,确保其中的信息符合其对AppsFlyer SDK的实际配置和使用场景。
| 名称 | NSPrivacyCollectedDataType | NSPrivacyCollectedDataTypeLinked | NSPrivacyCollectedDataTypeTracking | NSPrivacyCollectedDataTypePurposes |
|---|---|---|---|---|
| 设备ID(Device ID,即IDFA和IDFV) | NSPrivacyCollectedDataTypeDeviceID | 是 | 是 | NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising |
| 产品交互(Product Interaction,即应用打开) | NSPrivacyCollectedDataTypeProductInteraction | 否 | 否 | NSPrivacyCollectedDataTypePurposeAnalytics |
必须声明使用原因的API(Required Reason APIs)
Apple要求开发方对于指定的一系列API声明其使用原因。使用这些API的应用和SDK必须在隐私清单(Privacy Manifest)的Required Reson API部分中提供详细信息。Apple根据一系列主题(topics),将这些API按照功能特点及传输信息分为多种类型。6.14.0版本的AppsFlyer SDK中包含下列API:
- File Timestamp API(文件时间戳)
- User defaults API(用户默认设置)
在说明Required Reason API的用途时,应用开发者需要指出相关API的类别并阐明使用该API的具体原因。下表列出了AppsFlyer使用的API及其用途。
6.14.0及以上版本的SDK
| API 类别 | API 类别类型 | 使用原因 | 注意事项 |
|---|---|---|---|
| File Timestamp API(文件时间戳) | NSPrivacyAccessedAPICategoryFileTimestamp | C617.1 | 该SDK使用NSFileCreationDate和NSFileModificationDate API判断相关应用的安装日期以及更新日期。 |
| User defaults API(用户默认设置) | NSPrivacyAccessedAPICategoryUserDefaults | CA92.1 | SDK会储存其运行所必须的数据,比如持续记录应用打开次数。 |
6.13.x及更早版本的SDK
| API类别 | API类别类型 | 使用原因 | 注意事项 |
|---|---|---|---|
| File Timestamp API(文件时间戳) | NSPrivacyAccessedAPICategoryFileTimestamp | C617.1 | 该SDK使用NSFileCreationDate和NSFileModificationDate API判断相关应用的安装日期以及更新日期。 |
| System boot time APIs(系统启动时间) | NSPrivacyAccessedAPICategorySystemBootTime | 35F9.1 | 监测SDK性能(执行请求的耗时等) |
| User defaults API(用户默认设置) | NSPrivacyAccessedAPICategoryUserDefaults | CA92.1 | SDK会储存其运行所必须的数据,比如持续记录应用打开次数。 |
以下代码片段中包含了上述必须声明的使用原因(Required Reasons),您可以直接将其复制粘贴到您的PrivacyInfo.xcprivacy文件中。
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
</dict>
<dict>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>C617.1</string>
</array>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
</dict>
<dict>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>35F9.1</string>
</array>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
</dict>
</array>
跟踪域名(Tracking Domains)
相关应用或第三方SDK中使用的任何跟踪域名(Tracking Domain)都必须在记录在隐私清单中。如果用户未通过应用跟踪透明度框架(即ATT弹窗 )授权,同意数据跟踪(即opt-out),则iOS操作系统会拦截从用户设备传输到该域名的所有流量。AppsFlyer SDK在执行任何服务器请求之前都会先确认用户的ATT授权状态,然后再根据用户的授权状态执行该请求。
常见问题解答
AppsFlyer是否提供支持Privacy Manifest的SDK?
是的,6.14.0及以上版本的SDK都全面支持Privacy Manifest。
应用开发者是否必须上报自己的数据收集情况?
是的,除了AppsFlyer及其他SDK之外,您还需要明确您自己的数据收集及使用情况、并通过隐私标签(Nutrition Labels)传达这些信息,其中必须涵盖您对AppsFlyer SDK的默认配置所做的任何更改(如应用内事件的衡量设置)。