SkAdNetwork的使用

参考这里这里


这个方案需要以下参与方:

  • 广告网络(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

Registering an Ad Network

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