如何在不使用广告 ID 的情况下实现精准广告投放?

解读

国内 Android 应用从 2022 年起陆续接入《个人信息保护法》《移动互联网应用程序个人信息保护管理暂行规定》以及工信部 164 号文,明文要求“不得因用户拒绝提供设备标识而拒绝服务”,且 2023 年 4 月工信部下架了一批仍强制获取 OAID 的 SDK。
因此“不用广告 ID”不仅是技术题,更是合规题。面试官想确认两点:

  1. 你是否了解国内可替代的设备级/用户级标识体系;
  2. 你能否在系统限制(TargetSdk 34、后台启动限制、权限收紧)下,用工程化手段把“可用数据”做成“可用特征”,同时通过隐私政策、双清单、SDK 合规审计把风险降到“零通报”。
    回答时要先讲合规底线,再讲技术方案,最后给出可落地的指标与灰度策略。

知识点

  1. 国内主流替代标识:移动安全联盟 MSA 的 OAID、华为 AAID、小米、OPPO、vivo 各家的 VAID、AAID、ODID;CAID(中国广告协会)已暂停,不再讨论。
  2. 终端级特征:系统版本、ROM、CPU ABI、屏幕分辨率、语言、时区、电池状态、系统编译指纹、Build.TIME、可用存储、传感器列表(陀螺仪、加速度、磁场、光线)、WebView User-Agent。
  3. 网络级特征:IPv4/IPv6 前缀、TCP MSS、TLS 指纹(JA3/JA3S)、HTTP/2 设置帧、CDN 边缘节点 RTT。
  4. 应用级特征:安装列表(需用户授权)、首次安装时间、最后更新时间、自启动次数、通知栏开关、字体缩放、无障碍开关。
  5. 行为级特征:冷启动间隔、页面停留序列、滑动速度、点击坐标分布、传感器指纹(握持姿态)、电池温度变化率。
  6. 联邦学习与端智能:在端侧做 Embedding 推理,只上传梯度或聚类 ID,满足“数据不出域”。
  7. 隐私合规:双清单(SDK 列表、收集列表)、隐私政策“单独同意”弹窗、可撤销授权入口、数据删除接口、国密 SM4 加密、六个月存储期限、SDK 合规审计报告。
  8. 工程化:
    • 特征采集模块与业务代码解耦,采用 ContentProvider+Caller Verify 防止任意调用;
    • 使用 Kotlin 协程 + WorkManager 做延迟批采,降低电量消耗;
    • 通过差分隐私在客户端加噪(ε≤1),再上传;
    • 服务端使用 Redis Bitmap 存储 7 日活跃特征,支持 BitOP 快速计算 Look-alike。

答案

“不用广告 ID”在国内落地可分四步:
第一步,合规先行。在隐私政策中把“精准投放”与“设备特征”列明为单独条目,提供“一键关闭”入口;对 OAID、VAID 的读取加双清单说明,用户拒绝后写入 SharedPreferences 标志位,后续流程直接跳过。

第二步,端侧生成“弱标识+强特征”组合。

  1. 弱标识:取 OAID/VAID 读取结果,若返回空或用户拒绝,则退化为“系统指纹+应用首次安装时间”的 SHA-256 截断 16 字节,作为 7 日有效的临时 UID,存储在 EncryptedFile 中,卸载即失效。
  2. 强特征:在 Application.onCreate 阶段异步采集 30 维终端静态特征(Build 字段、传感器列表、WebView UA)、20 维网络特征(TLS 指纹、IPv6 前缀)、50 维行为特征(最近 3 天页面序列 TF-IDF)。所有特征在本地做 Min-Max 归一化后,通过 TFLite 模型推理得到 32 维 Embedding,再用同态量化(8bit)压缩到 32 字节。

第三步,服务端 Look-alike。

  1. 实时流:Embedding 写入 Kafka,Flink 计算与广告库中“正样本”的 Cosine Top-200,返回 3 个候选广告组。
  2. 冷启动:新用户无 Embedding 时,用“IPv6 前缀+机型”在 Redis 查聚类中心,取对应广告组,保证首日填充率 ≥85%。
  3. 去重:使用 BloomFilter(误识率 0.1%)记录已曝光创意,防止重复打扰。

第四步,效果回收与隐私兜底。

  1. 曝光/点击日志只回传“临时 UID+广告位 ID+Embedding”,不回传明文机型;
  2. 每日凌晨运行数据删除 Job,超过 7 天的原始特征与日志一律物理擦除,并写审计日志到国密 SM3 哈希链,防篡改;
  3. 接入中国信通院 SDK 合规自测平台,确保通过 164 号文 42 项检测。

上线后指标:

  • 与 OAID 方案相比,CTR 下降 3.7%,eCPM 下降 2.1%,但合规风险为零,应用市场零通报;
  • 通过联邦学习每两周更新一次模型,四周后 CTR 差距缩小到 1.2%,满足商业化底线。

拓展思考

  1. 折叠屏与多窗口场景下,页面序列特征会突变,可考虑把“屏幕物理尺寸+窗口比例”作为动态特征,实时更新 Embedding。
  2. 车载 Android 系统无 OAID,可用车机 VIN 的 SHA-256 截断做弱标识,但 VIN 属于敏感信息,需走车厂合规白名单;更安全的做法是用车机“系统编译指纹+车机首次激活时间”生成临时 UID。
  3. 如果广告主要求“跨 App 联合投放”,可采用“隐私求交(PSI)+ 联邦建模”方案:两端各自在本地计算用户 32 维 Embedding,仅对广告主的加密种子样本做 PSI 匹配,匹配成功后再联邦训练 Look-alike 模型,全程明文 ID 不出域,满足《个人信息保护法》第 38 条“最小必要”原则。