一、什么是SKAdNetwork?
iOS14.5开始,获取IDFA需要用户确认授权才可,此时 SKAdNetwork 正式回归。
SKAdNetwork 是苹果在2018年推出的一个更加保护用户隐私的归因框架,并与2020年推出2.0版本,加入了源AppID,可识别出从哪里来的。
目的:高度保护用户隐私
其相对于IDFA来说,在不追踪用户隐私的情况下,达到归因的目的。一对一实现,非实时。IDFA可以一对多,实时归因流程如下:
二、种类
1. 网站到网站。
2. 网站到App。
网站以前是Cookie来区分的,苹果推出了 PCM (Private Click Measurement)
3. App到App Store App。
涉及到三方交互:Ad Networks、Publisher apps、Advertised Apps
三、归因流程
广告平台(Ad Networks):
在苹果后台注册 SKAdNetworkIdentifier,例如:xxxxxxxxxx.skadnetwork,可以注册多个,后续将所有相关ID提供给 “接入广告SDK的App”
人员
提供广告SDK,内部代码:在广告页面进行点击的时候,调用苹果API:loadProductWithParameters,插入相应的参数,这时候苹果保存这些信息
接入广告SDK的App(Publisher Apps):
接入广告SDK,将广告平台提供的所有 SKAdNetworkIdentifier
写入到 Info.plist
中
在合适的时机相应地展示广告
被推广的App (Advertised Apps):
启动时,调用苹果API:registerAppForAdNetworkAttribution
,调用此方法后,会启动一个定时器来向苹果发送归因(24~48小时触发)(多次调用无效,只会生效第一次)。当然你可以并没有直接调用,有可能接入了第三方SDK, 如AppsFlyer
,他们会帮助调用,并把广告平台发来的归因数据给出(归因数据中在2.0版本中添加了一个 Redownload
字段,来标识用户是否是重新安装。同时有 源AppID,Conversion Value)
另外一个API:updateConversionValue
,更新后,已启动定时器会重新开始计时,比如首次购买
24~48小时触发归因后,苹果会将归因数据回传给广告平台。如果当前App(被推广的App)在Info.plist
填入了 NSAdvertisingAttributionReportEndpoint
字段来接收归因回调,那么苹果此时也会同步一份归因数据给当前App(iOS 15支持的 postback to Developer
)
在Info.plist
中填入 键值为 NSAdvertisingAttributionReportEndpoint
的回调地址(可选)
测试:测试阶段可以配置
Testing profile
文件,能很快拿到归因,不用等24~48小时 (https://developer.apple.com/download/all/?q=SKAdNetwork)
四、开发者回传归因数据示例
{
"app-id":1413608864,
"campaign-id":3,
"attribution-signature":"MEUCIFRozIX4hxGHiXUtFjSdy77SOVrCU8NY9pgfgL3dzNXbAiEA9oi7jPDHvy0NDdRRQFyIPxSj8NGMYELGcSf\\/hfQFHkQ=",
"fidelity-type":1,
"transaction-id":"7e0909b1-0fb4-422b-85c4-9421c534281b",
"did-win":true,
"version":"3.0",
"ad-network-id":"n38lu8286q.skadnetwork",
"redownload":false
}
五、开发者归因回调链接的要求(针对服务器)
提供的链接为一个服务器域名,需要支持https,且需是主域名支持而非子域名。例如AppsFlyer给出的归因链接: https://appsflyer-skadnetwork.com 。
注意事项:如果你使用的是子域名,苹果会直接忽略子域,自动向主域发送Post请求。例如你填入的域名是 https://appsflyer-skadnetwork.sub.com 其是子域,苹果这时候会忽略掉 sub,自动向主域 https://appsflyer-skadnetwork.com 发送。另外,如果发送失败,苹果最多会再尝试9次,苹果是通过接口返回的状态码是否是200来确认有没有发送成功的。
接口要求:其可以接收 Post请求,content-type为: application/json。接口要求的最终形式如下(从.well-known开始到后面的苹果会主动拼接,不要填入,开发者只需填入https+域名部分即可)
https://appsflyer-skadnetwork.com/.well-known/private-click-measurement/report-attribution/
https://appsflyer-skadnetwork.com/.well-known/skadnetwork/report-attribution/
可以使用Postman向如上两个最终接口各发一个Post请求,将【四】的示例数据放入body,content-type设置为application/json。如果服务器能够接收到数据,并返回200 的状态码,就是对的。
六、SKAdNetwork的版本生效规则
https://developer.apple.com/documentation/storekit/skadnetwork/skadnetwork_release_notes
SKAdNetwork 2.1:
The source app generates a signature for version 2.1.
The source app is built with the iOS 14 SDK or later.
The advertised app is App Store-signed and running on a device with iOS 14 or later.
SKAdNetwork 2.2:
The source app generates a signature for version 2.2.
The source app is built with iOS 14.5 SDK or later.
The advertised app is App Store-signed and running on a device with iOS 14.5 or later.
SKAdNetwork 3.0:
The source app generates a signature for version 3.0.
The source app is built with iOS 14.6 SDK or later.
The advertised app is App Store-signed and is running on a device with iOS 14.6 or later.
SKAdNetwork 4.0:
The ad network generates an ad signature for version 4.
For ads that appear in an app, the app is built with iOS 16.1 SDK or later. For web ads, the ad appears in Safari 16.1 or later.
The advertised app is App Store-signed and is running on a device with iOS 16.1 or later.
解释说明:
Source app :发布广告的App;
The advertised app : 广告中被推广的App;
Store-signed :是说必须是上架在App Store 的App,企业版App无法生效;
The ad network:广告平台
七、参考WWDC
2022:SKAdNetwork 的新功能
What's new with SKAdNetwork
2021:认识保护隐私的广告属性
Meet privacy-preserving ad attribution
2020:App内购买项目的新内容(最后10分钟)
What’s new with in-app purchase
2020:通过更好的隐私建立信任
Build trust through better privacy
网友评论