Meet privacy-preserving ad attribution
Privacy & Security 进阶 20m

认识隐私保护的广告归因

Meet privacy-preserving ad attribution

2021年6月9日

在 Apple 官方观看视频

一句话判断

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)相关适配。
WWDC 2021