认识隐私保护的广告归因
Meet privacy-preserving ad attribution
2021年6月9日
一句话判断
SKAdNetwork 2.2 和 Private Click Measurement 是 Apple 给广告行业画的新边界——广告主能拿到的数据越来越少,但如果你不主动适配,连这最后一份数据都拿不到。
这场 Session 讲了什么
Apple 在隐私保护上的攻势在 iOS 15 继续推进。这场 Session 聚焦两个广告归因(Ad Attribution)相关的技术:SKAdNetwork 的更新和 Private Click Measurement(PCM)。
SKAdNetwork 在 iOS 15 更新到 2.2 版本。新版本允许广告主在转化回调(Postback)中收到更多的细粒度数据,但仍然保持聚合级别——你不会知道具体是哪个用户点击了广告,只知道「有多少用户在点击后做了某个值的转化」。新增了 fineValue 字段,支持自定义的转化值分级。
Private Click Measurement 是 Web 广告的隐私归因方案。当用户在 Safari 中点击广告并完成转化时,Safari 会在本地记录这次归因,然后通过一个加密的、延迟发送的回调通知广告主。整个过程中,广告主无法识别具体用户。
Session 还讨论了 Ad Attributions 的最佳实践:如何设计转化漏斗、如何在不同隐私级别间选择、如何在不侵犯用户隐私的前提下优化广告投放。
值得深挖的点
SKAdNetwork 的 fineValue 设计思路
fineValue 是一个 0-63 的整数,广告主可以用它来表示转化的「深度」。比如:0 表示点击但未注册、1 表示注册但未付费、2 表示首次付费、3 表示重复付费。这个值是在 app 端通过 updatePostbackConversionValue 设置的。
关键限制是:这个值在 Postback 回调中是「模糊化」的。如果某个转化值的样本量太少,系统会把它和相邻的值合并,以防止通过唯一值反推出用户身份。所以你不应该把 fineValue 设计得太细——3 到 5 个档位通常就够了。
Private Click Measurement 的 8 位 Attribution
PCM 只提供 8 位的来源标识符(Source ID)和 8 位的目标标识符(Trigger Data),这意味着你最多只能追踪 256 个广告来源和 256 个转化事件。对于大型广告平台来说这个空间远远不够,但 Apple 的设计意图就是迫使广告主做聚合分析而不是用户级别追踪。
代码片段
// 在 app 中更新 SKAdNetwork 转化值
import StoreKit
func handlePurchaseCompleted(product: Product) {
// 根据产品类型设置不同的转化值
let conversionValue: Int
switch product.category {
case .subscription:
conversionValue = 3 // 订阅付费
case .oneTimePurchase:
conversionValue = 2 // 一次性付费
case .trial:
conversionValue = 1 // 试用注册
default:
conversionValue = 0 // 仅安装
}
// 更新 SKAdNetwork 的转化值
SKAdNetwork.updatePostbackConversionValue(
conversionValue
) { error in
if let error = error {
print("更新转化值失败: \(error)")
}
}
}
<!-- Private Click Measurement 的 Web 端配置 -->
<!-- 广告展示页面:标记点击来源 -->
<a href="https://merchant.example.com/product"
attributionsourceid="42"
attributiondestination="https://merchant.example.com">
查看商品
</a>
<!-- 转化页面:触发归因 -->
<!-- 在商户的感谢页面中 -->
<html>
<head>
<meta name="attributions" content="
attributiondestination=https://advertiser.example;
attributionreportto=https://analytics.example;
sourceeventid=42;
triggerdata=1;
priority=1">
</head>
</html>
最佳实践
如果你是一个广告主(在 app 中接收广告流量),现在就应该实现 SKAdNetwork 的 updatePostbackConversionValue 调用。即使你暂时只用 0 和 1 两个值(安装和注册),也建议尽早接入。iOS 15 的 Postback 回调有一个时间窗口限制,如果你在窗口关闭后才调用更新,数据就丢失了。
对于 Web 端的广告归因,建议同时实现 PCM 和传统的 Cookie-based 归因作为 fallback。PCM 目前只有 Safari 支持,Chrome 和 Firefox 使用的是 Google 的 Privacy Sandbox 方案。
还有什么值得关注
- SKAdNetwork 2.2 支持多个 Postback 窗口(0-2天、3-7天、8-35天),可以在不同时间点收到转化回调。
- PCM 的报告延迟是随机化的(24-48小时),这是为了防止通过时间戳反推用户身份。
- Apple 正在开发更多的 Attribution API,包括邮件打开追踪的 MMP(Mail Privacy Protection)相关适配。