这个方案需要以下参与方:
- 广告网络(Ad Network):对广告签名,当广告带来转化时接收安装通知
- 来源应用(Source Apps):展示来自广告网络的广告
- 广告主应用(Advertiser Apps):出现在签名的广告中
广告网络需跟苹果注册,开发者们需在 APP 中配置相关的广告网络。
以下图表描述了安装验证的流程,App A 指展示广告的来源APP,App B 指用户安装的广告主APP。
当用户点击广告时,一个带有签名信息的APP Store产品界面呈现出来,签名信息标记了此次广告活动。如果用户安装并且打开了APP,设备发送一个安装验证通知给广告网络。这个由Apple签名的通知包括广告活动ID,但是不含用户或设备相关的数据。通知还可以包含一个转化数值和来源应用ID,这个取决于苹果设定的一个隐私阈值。
使用广告网络API的各参与方需承担以下责任。
广告网络的责任:
- 在苹果注册自己的广告网络ID,提供给开发者。
- 为来源应用提供签名的广告。
- 通过注册时填写的URL接收安装验证通知
- 验证通知。
来源应用的责任:
- 将广告网络的ID添加到应用的 Info.plist 文件。
- 展示签过名的广告。
广告主应用的责任:
- 发起应用安装验证通知,方法:
registerAppForAdNetworkAttribution()
或updateConversionValue(_:)
。 - 可选地,更新转化数值,方法:
updateConversionValue(_:)
。
设备在计时结束后,会自动发送安装验证。
广告主 - 注册App用于广告网络归因 registerAppForAdNetworkAttribution
验证作为广告结果安装的应用程序的首次启动。
函数声明
说明
应用在首次启动时调用此函数或 updateConversionValue:
。
如果此次安装有归因数据,那么首次调用 registerAppForAdNetworkAttribution 会生成通知,并且启动一个 24 小时计时器。再次调用就没有反应了。但是你可以调用 updateConversionValue: 提供转化数值并且重启计时器。
在计时器结束后的 0-24 小时内设备将安装通知发送给广告网络。广告网络在收到通知后必须进行验证。
广告主 - 更新转化数值 updateConversionValue
更新转化数值,并且验证作为广告结果安装的应用程序的首次启动。
函数声明
参数
conversionValue
无符号的 6 bit 整数(0-63)。由广告主应用和广告网络决定此值的含义。默认为0。
说明
应用在首次启动时调用此函数或 registerAppForAdNetworkAttribution
。开发者可以在 24小时的循环周期内反复调用 updateConversionValue: 去更新转化数值。调用此方法有两个目的:
- 产生一个安装通知,是一个加密签名的数据包,用于验证是否来自广告
- 让应用提供或更新一个转化数值
转化数值是由广告网络或者广告主定义的 6 bit 值。App 来决定何时更新,在计时器结束前可以随意调用。每次调用,只要这个值比上一次大,计时器就会重新计时。当计时器结束,最后的数值将生效,并且继续调用 updateConversionValue: 无任何作用。
在计时器结束后的 0-24 小时内设备将安装通知发送给广告网络。只有发送的数据量达到苹果隐私的阈值,通知才会包含最后的转化数值。广告网络在收到通知后必须进行验证。
如果你不需要转化数值,那么只要调用 registerAppForAdNetworkAttribution
即可。
在实践中,开发者可以仔细把握调用的时机,并且对数值做良好的定义,就能达到衡量广告用户质量的目的。
参考资料
https://developer.apple.com/documentation/storekit/skadnetwork
Configuring the Participating Apps
Generating the Signature to Validate an Installation
Ad Network Install Validation Keys
class func updateConversionValue(Int)
class func registerAppForAdNetworkAttribution()
Verifying an Install Validation Postback