当前位置: 首页 > news >正文

SKAdNetwork:从0到1

一、什么是SKAdNetwork

https://developer.apple.com/documentation/storekit/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,例如:n38lu8286q.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字段,来标识用户是否是重新安装。同时有 源AppIDConversion 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来确认有没有发送成功的。

Replace example.com with your domain name. The system uses only the registrable part of the domain name, and ignores any subdomains.

接口要求:其可以接收 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
  • SKAdNetwork文档:https://developer.apple.com/documentation/storekit/skadnetwork
  • 开发者归因文档:https://developer.apple.com/documentation/bundleresources/information_property_list/nsadvertisingattributionreportendpoint
http://www.lryc.cn/news/17527.html

相关文章:

  • Spring+MVC+MYbatis注解开发
  • Redis主从复制过程
  • Spring boot开启定时任务的三种方式(内含源代码+sql文件)
  • Tekton实战案例--S2I
  • 四、使用类实现功能
  • Java多线程不安全的例子
  • vivo X Flip会是高端手机市场的又一折叠屏爆款吗?
  • MySQL中MVCC如何解决不可重复读以及幻读?
  • 设计模式第八讲:观察者模式和中介者模式详解
  • 关于 mac 本地配置域名能 ping 通,但是浏览器不能访问的问题(而其他电脑操作可访问)
  • 【代码随想录二刷】Day23-二叉树-C++
  • Linux GPIO 开发指南
  • 记一次后端生成Zip文件通过浏览器下载后文件损坏,无法打开,不可预知的末端错误,下载后文件比源文件增大
  • python中savgol_filter的详细解释
  • C语言--指针进阶1
  • ssh的使用
  • Apache Hadoop生态-目录汇总-持续更新
  • 「JVM 编译后话」编译器优化技术
  • 【python学习笔记】:输出与输入
  • 汽车电子社区交流宣传
  • String、StringBuilder 和 StringBuffer 详解
  • windows服务器上传文件解决方案
  • Android Studio翻译插件推介(Translation)
  • DNS,DNS污染劫持,DNS加密
  • 【Python】如何度量优秀代码——静态分析工具
  • Open3D 点云高程归一化(基于2维地面点,Python版本)
  • 动态系统的建模与分析
  • QCC51XX---HCI log
  • Redis四 原理篇
  • 从0开始写Vue项目-Vue实现数据渲染和数据的增删改查