Apple's privacy pillars in focus
Privacy & Security 入门 26m

聚焦苹果隐私保护四大支柱

Apple's privacy pillars in focus

2021年6月9日

在 Apple 官方观看视频

一句话判断

这不是一集教你怎么写代码的 Session,而是苹果给开发者上的”隐私合规课” —— 如果你不理解苹果隐私设计的底层逻辑,你的 app 迟早会在审核或口碑上栽跟头。

这场 Session 讲了什么

Session 系统梳理了苹果隐私保护的四大支柱(Privacy Pillars):数据最小化(Data Minimization)、本地优先处理(On-Device Intelligence)、透明与控制(Transparency and Control)、安全保护(Security)。

数据最小化要求开发者只收集完成功能所必需的数据,用完即删。本地优先强调尽可能在设备端完成计算(如照片分类、语音识别),不把原始数据上传到云端。透明与控制指的是 App Privacy Label(隐私营养标签)和 ATT(App Tracking Transparency)等机制,让用户知道并控制数据流向。安全保护则涵盖了 Secure Enclave、Sign in with Apple、iCloud Private Relay 等技术。

Session 用多个案例分析这些原则如何影响 app 设计决策,并预告了 iOS 15 中的隐私新特性。

值得深挖的点

App Privacy Label 不只是合规要求,它正在成为用户的下载决策因素。苹果在 App Store 中强制要求开发者填写隐私标签,包括”收集哪些数据”、“数据是否用于追踪”、“数据是否关联到用户身份”。Session 透露的数据显示,标注为”不收集任何数据”的 app 下载转化率明显更高。这倒逼开发者在产品设计阶段就考虑数据最小化,而不是事后填表。

iCloud Private Relay 对广告行业的影响。Private Relay 通过两跳代理(苹果服务器 + 第三方服务器)加密用户的 Safari 浏览流量,ISP 和网站都无法同时知道”你是谁”和”你在访问什么”。对于依赖 IP 地理定位和浏览追踪的广告 SDK,这意味着原有方案全部失效。开发者需要转向 SKAdNetwork 等隐私友好的归因方案。

代码片段

实现 ATT 追踪授权请求

import AppTrackingTransparency

func requestTrackingPermission() {
    ATTrackingManager.requestTrackingAuthorization { status in
        switch status {
        case .authorized:
            // 用户同意追踪,可以获取 IDFA
            let idfa = ASIdentifierManager.shared().advertisingIdentifier
            print("IDFA: \(idfa)")
        case .denied:
            // 用户拒绝,使用 SKAdNetwork 归因
            print("追踪被拒绝,回退到 SKAdNetwork")
        case .notDetermined:
            // 还未弹出授权框
            break
        default:
            break
        }
    }
}

使用 Sign in with Apple 减少数据收集

import AuthenticationServices

func setupSignInWithApple() {
    let button = ASAuthorizationAppleIDButton(
        authorizationButtonType: .signIn,
        authorizationButtonStyle: .black
    )
    button.addTarget(self, action: #selector(handleAppleSignIn), for: .touchUpInside)

    let provider = ASAuthorizationAppleIDProvider()
    let request = provider.createRequest()
    // 只请求必要的信息
    request.requestedScopes = [.fullName, .email]
}

@objc func handleAppleSignIn() {
    let controller = ASAuthorizationController(
        authorizationRequests: [appleIDProvider.createRequest()]
    )
    controller.delegate = self
    controller.performRequests()
}

检查隐私标签所需的数据审计

// 在 app 中审计数据收集行为
func auditDataCollection() {
    // 检查你使用的第三方 SDK 的数据收集范围
    // 如果 app 使用了 Analytics SDK:
    let analyticsDataTypes: [String] = [
        "用户标识符", "设备信息", "使用频率", "崩溃日志"
    ]
    // 对应 Privacy Label 需要声明:
    // - 标识符(Identifiers):用于追踪
    // - 使用数据(Usage Data):用于分析
    // - 诊断数据(Diagnostics):用于 App 功能
    // 确保每一项都有对应的"目的"声明
}

最佳实践

  1. 在产品设计阶段就做隐私影响评估。每新增一个数据收集点,问自己三个问题:这数据必须吗?能在本地处理吗?用户知道我在收集吗?如果第三个答案是”不知道”,重新设计。
  2. 用 Sign in with Apple 替代自建账号系统。它让用户可以隐藏真实邮箱(用中继邮箱),既减少了你的数据责任,也让用户更放心注册。
  3. 为 ATT 被拒的场景做好 Plan B。全球平均 ATT 授权率约 25-40%,大部分用户会拒绝追踪。提前接入 SKAdNetwork 和转化追踪,不要把商业模式全押在 IDFA 上。

还有什么值得关注

  • iOS 15 新增了 Privacy Report 功能(Settings > Privacy > Record App Activity),用户可以看到每个 app 在过去 7 天里访问了哪些敏感数据。
  • Mail Privacy Protection 会默认阻止邮件追踪像素(Email Tracking Pixel),营销邮件的打开率数据将不再可靠。
  • Siri 语音识别在 iOS 15 中完全在设备端完成,不发送音频到苹果服务器。
WWDC 2021