隐私清单(Privacy Manifest)

概要: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隐私清单,其中包含以下信息;

数据使用情况

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:

在说明Required Reason API的用途时,应用开发者需要指出相关API的类别并阐明使用该API的具体原因。下表列出了AppsFlyer使用的API及其用途。

6.14.0及以上版本的SDK

API 类别 API 类别类型 使用原因 注意事项
File Timestamp API(文件时间戳) NSPrivacyAccessedAPICategoryFileTimestamp C617.1 该SDK使用NSFileCreationDateNSFileModificationDate API判断相关应用的安装日期以及更新日期。
User defaults API(用户默认设置) NSPrivacyAccessedAPICategoryUserDefaults CA92.1  SDK会储存其运行所必须的数据,比如持续记录应用打开次数。

6.13.x及更早版本的SDK

API类别 API类别类型 使用原因 注意事项
File Timestamp API(文件时间戳) NSPrivacyAccessedAPICategoryFileTimestamp C617.1 该SDK使用NSFileCreationDateNSFileModificationDate 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的默认配置所做的任何更改(如应用内事件的衡量设置)。