背景
随着 iOS14 的发布,苹果在用户隐私权限对厂商开放程度这块收的更紧,诸如相机,相册访问的粒度细化啦,定位精确度的可选啦等等。相对于用户来说,这是好事,减少了个人隐私信息的泄露。但是从另一个方向来看,苦了一大批以用户隐私数据为生的厂商,本文要讨论的就是广告追踪这块。
历史
从 iOS6 开始,苹果为防止厂商滥用用户不能更改的 UDID 和设备 Mac 地址推出了专为广告追踪而生的 IDFA。相对于 UDID 和设备 Mac 地址来说,IDFA 是可以改变的,用户可以手动重置这个标识符。所以,在 IDFA 推广之初,广告厂商们的内心是拒绝的,万一用户重置了这个标识符呢?用户行为的追踪就会受到很大的影响,但是随着时间的推移,厂商们发现绝大部分用户都不会去点那个重置按钮,IDFA 和之前那些不可变的设备 ID 功能是一样的。iOS10 之后,苹果又推出了用户可以限制广告追踪的功能,厂商们的内心又是一阵惊涛骇浪,因为限制了广告追踪后,厂商们获取到的 IDFA 是一串没有意义的 0。不过一段时间后,厂商们内心又平静了下来,他们发现,由于缺乏相关专业知识,大部分用户都不知道限制广告追踪那个按钮的存在,用户基本上不会去打开限制广告追踪按钮。
好了,如今 iOS14 的推出,苹果把这个按钮从隐秘的角落直接推到用户面前,在 APP 需要获取 IDFA 的时候,系统会直接提示是否允许使用 IDFA,把选择权直接交给了用户。用户调研的数据表明,iOS 系统的隐私权限选择弹框中,约有 40% 的用户会选择不允许。这下,厂商们是真的不淡定了。
替代方案
从 iOS11.3 开始,苹果发布了一套新的 api,SKAdNetwork。意在取代 IDFA 用在广告投放中追踪用户。
- 简介
SKAdNetwork 这套框架主要用来评估在保证用户隐私的前提下的广告投放活动的效果。主要涉及到三个方面
- 广告的注册和转化结果的接受
- 广告宿主 APP
- 被广告的 APP
- 注册
SKAdNetwork 需要向苹果注册,并且开发者需要在广告宿主 APP 中进行相关配置。
- 需要向苹果提交信息申请注册,获取 AdNetWorkID。注册需要提交的信息如下图所示:选择并填写好你自己公司对应的广告信息后,点击蓝色的提交按钮就把信息提交给苹果审核了。
- 需要根据你的公司信息生成一对秘钥证书,公钥证书提交给苹果用来验证广告 ID。私钥证书自己留着用来对广告 ID 进行加密。
生成私钥证书:
openssl ecparam -name prime192v1 -genkey -noout -out companyname_skadnetwork_private_key.pem
将命令行里的公司信息替换成你自己的公司信息就行。
用私钥证书生成对应的公钥证书:
openssl ec -in companyname_skadnetwork_private_key.pem -pubout -out companyname_skadnetwork_public_key.pem
同样,需要将上述命令里的公司信息替换成自己的。
- 工作流程
SKAdNetwork 工作流程如下图所示:
首先是广告注册签名,获取广告在 iTunes 里的 ID,随着宿主 APP 提交给 AppStore,用户在 AppStore 中下载宿主 APP 后,宿主 APP 里的展示着被广告 APP 的广告内容,如果用户点击广告内容,则会跳转到 AppStore 中被广告 APP 的详情展示页面,这个详情页内容是和前面的签名参数绑定在一起的,标识着这次展示是一次广告行为。这个时候,如果用户安装了被广告 APP,设备就会向广告网络回馈一次安装验证。苹果的签名消息包含了这次广告活动的 ID,但是不包含任何用户或设备相关的信息。这个回馈信息可能包含广告的转化率或宿主 APP 的 ID 等信息,当然这些信息肯定是符合苹果的隐私政策的。
- 其他各部分说明
其他部分在整个 SKAdNetwork 工作流程中需要注意的是:
- adnetworkID 需要注册并且提供给开发者。详见 adnetwork 的注册
- 需要将注册过的广告提供给宿主 APP。详见如何获取安装验证签名
- 注册 adnetwork 的时候,回馈用的 URL 一定要填写,它是用来接收安装验证回馈信息的。
- 如何验证回馈信息。详见验证回馈信息
- 宿主 APP 要将 adnetworkID 添加至 info.plist 文件。详见配置宿主 APP
- 宿主 APP 需要展示向苹果注册签名过的广告内容。详见 adnetwork 的安装验证
- 被广告 APP 需要调用
registerAppForAdNetworkAttribution()
或者updateConversionValue(_:)
这两个方法,来提供 APP 安装验证信息。 - 被广告 APP 调用
updateConversionValue(_:)
来更新转化率。当用于更新转化率的计时器到期时,设备自动发送安装验证回馈。
注意:AppClip 目前不支持 SKAdNetwork
总结
就目前来看,在 iOS14 的 IDFA 的可用性大打折扣的情况下,SKAdNetwork 还不能做到替代 IDFA,广告投放的透明度和精准度完全比不上 IDFA,甚至还可能催生出一批广告作弊的黑产,确实令厂商们头疼。不过,随着苹果的慢慢优化,不断的更新迭代,相信在不久的将来,苹果一定能做到用户隐私和厂商们的广告投放效果两者兼得的。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于