聚焦苹果隐私保护四大支柱
Apple's privacy pillars in focus
2021年6月9日
一句话判断
这不是一集教你怎么写代码的 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 功能
// 确保每一项都有对应的"目的"声明
}
最佳实践
- 在产品设计阶段就做隐私影响评估。每新增一个数据收集点,问自己三个问题:这数据必须吗?能在本地处理吗?用户知道我在收集吗?如果第三个答案是”不知道”,重新设计。
- 用 Sign in with Apple 替代自建账号系统。它让用户可以隐藏真实邮箱(用中继邮箱),既减少了你的数据责任,也让用户更放心注册。
- 为 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 中完全在设备端完成,不发送音频到苹果服务器。