iOS-SKAdNetwork

一、什么是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://developer.apple.com/documentation/bundleresources/information_property_list/nsadvertisingattributionreportendpoint

提供的链接为一个服务器域名,需要支持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

AdAttributionKit文档
SKAdNetwork文档
开发者归因文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容