SKAdNetwork广告平台对接指南

概览: 广告平台与AppsFlyer完成SKAdNetwork对接后,可以获得SKAdNetwork的归因结果并进行广告优化。

SKAdPartnerBadges.png

关于SKAdNetwork对广告主端的解决方案,请点击下方:

SKAdNetwork解决方案导览 |AppsFlyer后台SKAdNetwork面板

AppsFlyer可为广告平台提供:

  • 广告系列转化归因:
    • 和AppsFlyer进行对接可以确保广告主在该广告平台进行的营销活动里产生的所有应用安装,应用内事件,以及收益都可以被准确归因
    • 如果没有准确对接,上述提到的安装,应用内事件及收益都将会被算作自然量,无法归因给对应广告平台 
  • 广告系列优化:
    • 回调中所带的转化值是被编译过的
    • AppsFlyer可以让广告平台对于每条回调里的转化值进行转换,以此确保广告平台可以基于转化值传达的信息来优化广告系列
  • 无需对接每一个广告主:
    SKAdNetwork的回调只发送给广告平台,广告主端如果想获取对应数据有以下方式: 
    • 以独立身份对接每一个合作的广告平台,这种对接方式从广告主和广告平台来看都不是一种规模化方式 
    • 与AppsFlyer进行对接,这是对于广告主以及广告平台都相对提高效率的对接方式
  • 让您的渠道在AppsFlyer脱颖而出: 
    • 支持SKAdNetwork方式对接的广告平台会在AppsFlyer后台予以特别标识,确保希望使用SKAdNetwork的广告主准确的找到支持此归因方式的广告平台。
    • 确保希望使用SKAdNetwork的广告主准确的找到支持此归因方式的广告平台

SKAdNetwork 数据传输流程

PostbackProcess_us-en.png

 完整的SKAdNetwork回调流程主要有以下几步: 

  1. iOS设备先将SKAdNetwork回调发给对应被归因的广告平台
  2. 广告平台可选择下列两种方式的的任意一种:
    • 补充数据维度并转发:广告平台添加广告系列ID(来解决SKAdNetwork限制至多100个campaign ID的问题),广告系列名称,iOS设备所在IP地址等信息细化回调
    • 重定向: 广告平台让iOS直接将回调重定向发送给AppsFlyer。在这种情形下,广告系列数据的维度补充会通过AppsFlyer以及广告平台间一个单独的API来进行
  3. AppsFlyer会对回调进行验证和反编译然后将包含更为详尽信息的回调发回给广告平台(并同时同步给广告主)

主要对接步骤

AppsFlyer和广告平台以SKAdNetwork方式进行对接主要分为以下步骤(本文已提到过):

  • 广告平台发送SKAdNetwork数据给AppsFlyer
  • 广告平台通过AppsFlyer发回的回调收到转化值解码后更为丰富详细的数据

向AppsFlyer发送数据

 广告平台收到来自设备的 SKAdNetwork 回传,将回传通过以下方式中的任意一种发送至AppsFlyer:

  • 补充数据维度并转发(POST)
  • 重定向(HTTP307重定向方式)

在接受到SKAd的回传后,AppsFlyer将进行如下处理:

  • 对回传进行验证:确保回传的唯一性。
  • 对转化值进行解码:生成归因激活及应用内事件记录。
  • 将解码后的回传发送到广告平台。
  • 通过数据面板和报告将归因数据提供给广告主和广告平台。

补充数据维度并转发

使用此方法,广告平台将从设备收到的每个回调转发到AppsFlyer。

广告平台

  • 接收来自iOS设备的回调
  • 向iOS设备的回调中补充以下数据:
    • 广告平台广告系列ID和广告系列名称
    • 从设备收到的IP地址,主要用于地理位置解析。
    • 从iOS设备发送的回调时间戳
  • 再发送回调到AppsFlyer
SKAdNetwork补充数据维度回传规范
接口

https://skadpostbacks.appsflyer.com/api/postbacks

HTTP方法 POST
可接收的格式 application/ json
返回码

200 OK: 收到回传,格式及签名验证通过

400: Bad request: 错误格式 JSON, 空值, JSON,无效签名

SKAdNetwork补充数据维度回传JSON参数

参数

格式

描述

来源

version 字符串

SKAdNetwork 版本

举例: "version":"2.0"

SKAd 回传
ad-network-id 字符串

广告平台 ID

举例: "ad-network-id":" abc123defg.skadnetwork"

SKAd 回传
campaign-id Integer

SKAdNetwork 广告系列 ID

举例: "campaign-id":23

SKAd 回传
transaction-id 字符串

SKAdNetwork 回传 transaction ID

SKAd 回传
app-id Integer 目标t App ID SKAd 回传
attribution-signature 字符串 归因签名 SKAd 回传
redownload 布尔 当 redownload = true, 意味用户从应用商店再次下载App SKAd 回传
source-app-id Integer

流量源 App ID (开发者)

SKAd 回传
conversion-value Integer AppsFlyer SDK 根据广告主的配置设置的转化值 SKAd 回传
ad-network-campaign-id 字符串

为了确保广告主,广告平台和AppsFlyer之间语言一直,请您务必提供给您的广告系列 ID

广告平台
ad-network-campaign-name 字符串 这一名称将显示在数据面板和数据报告中与广告系列匹配的广告系列名称。 广告平台
ad-network-adset-id 字符串

广告组ID

广告平台
ad-network-adset-name 字符串

广告组名称

广告平台
ad-network-ad-name 字符串

广告创意名称

广告平台
ad-network-ad-id 字符串

广告创意ID

广告平台
ip 字符串

苹果发送SKAdNetwork给广告平台时的客户端IP。

支持iPv4 及 IPv6 地址

举例: "ip":"198.51.100.1"

广告平台
时间戳 字符串

广告平台收到 SKAdNetwork 回传的时间精确到秒的10位UNIX 时间戳。[可选] 精确到毫秒的13位UNIX时间戳。

示例:

August 4, 2020, 07:25 UTC translates  to "timestamp": "1596525944"

广告平台

Curl 示例—补充 SKAd 回调数据维度

curl --location --request POST 'https://skadpostbacks.appsflyer.com/api/postbacks' \
 --header 'Content-type: application/json' \
  --data-raw '{
      "version":"2.0",
      "app-id": 888707086,
      "ip": "192.0.2.0",
      "ad-network-campaign-name": "skadnetwork_abc_campaign",
      "source-app-id": 888707074,
      "ad-network-id": "abcabcabc.skadnetwork",
      "transaction-id": "68eb3d91-15f5-44ee-9267-25c7655c20b6",
      "redownload": false,
      "attribution-signature": "MDYCGQCsQ4y8d4BlYU9b8Qb9BPWPi+ixk/OiRysCGQDZZ8fpJnuqs9my8iSQVbJO/oU1AXUROYU=",
      "timestamp": "1596525944",
      "ad-network-campaign-id": "222222",
      "conversion-value": 63,
      "campaign-id": 99
  }'

重定向

Redirect_us-en__2_.png

使用此方法,广告平台使用HTTP重定向命令来307来回应iOS设备发出的SKAdNetwork信息,请求设备将SKAdNetwork回调直接发送到AppsFlyer。 

重定向方法具有以下优点

  • 增加广告主的信任度:MMP代表广告主执行。通过向AppsFlyer提供一手回传信息,广告主可以确信,该回传在传输过程中不会受到操纵。
  • 广告平台无需做其他处理:广告平台(向设备)使用重定向指令,因此无需处理回传。相比之下,广告平台进行数据补充并转发的方法要求广告平台对回调进行处理,填充进其他参数,然后再将其转发给AppsFlyer

实现

  1. 配置您的服务器以使用HTTP 307对SKAdNetwork回调进行响应,将回调信息重定向到 https://skadredirect.appsflyer.com/api/redirects
  2. 在SKAdNetwork回调中拼接包含广告系列信息的详细参数,可添加的参数详见下表。特别建议在重定向请求中拼接广告系列的信息。广告系列信息使我们能够利用广告消耗和其他广告系列的数据来丰富SKAdNetwork数据,并使共同的广告主能够有效地优化广告。

重定向的SKAdNetwork请求举例

https://skadredirect.appsflyer.com/api/redirects&ad-network-campaign-id=243232&ad-network-campaign-name=yarg_campaign_name
  &ad-network-adset-name=dsdsa

请求参数

描述

ad-network-campaign-id 广告系列活动ID
ad-network-campaign-name Campaign 名称
ad-network-adset-id 广告组ID
ad-network-adset-name 广告设置名称
ad-network-ad-id 广告ID
ad-network-ad-name 广告名称
建议添加的与广告系列相关的参数(非必须)

 

接收 AppsFlyer 传输数据

在收到第一次回调之前,请考虑以下因素: 

  • 广告平台必须定义回发端点和模板,请与您的AppsFlyer合作伙伴开发经理联系,或与邮件integrations@appsflyer.com 联络以确保已完成
  • AppsFlyer 使用确定性和概率建模归因的现有回调机制发送 SKAdNetwork 回调

原则

  • 对于从广告平台发送到 AppsFlyer 的每个回调,AppsFlyer 都会发送:
    • 一个激活回。重新下载由 redownload 参数表示
    • 零到几次应用内事件回发确切的数字取决于转换值的请参阅模拟的回调
  • 当您使用回调时,同一激活或事件可以被多个AppsFlyer 归因解决方案归因。使用attribution_source参数区分回发类型。

回调宏

回传宏(名称)

描述

格式和示例 仅与应用内事件有关

site_id

发布广告的应用程序(源应用程序ID)

字串:876534

 

install_time

由 AppsFlyer 根据updateConversion窗口估算。提供为 10 位 UNIX 时间戳

  • 字符串:1596119460
  • 转换为 2020 年 7 月 30 日 UTC 时间 14:31
 

skad_ad_network_time

广告平台从 iOS 设备接收回调的时间由广告平台上报提供为 10 位 UNIX 时间戳

  • 字符串:1596119460
  • 转换为 2020 年 7 月 30 日世界标准时间 14:31



 


skad_af_received_time

AppsFlyer 收到来自广告平台的回调时间提供为 10 位 UNIX 时间戳

 

  • 字符串:1596119460
  • 转换为 2020 年 7 月 30 日世界标准时间 14:31

 

event_name

事件名称 

  • af_purchase
  • af_login
  • af_skad_revenue
  • 或由广告主设置

字符串:af_purchase,abc123

 

收入

使用指定的货币代码的收入金额

数字:5,20,0.4

currency

货币代码是广告主设置的应用专用货币

字符串:EUR,USD,ZAR

attribution_source

归因数据的来源:

SKAdNetwork: skadnetwork

字符串:skadnetwork

 

app_id

App ID (广告主 app)

字串:ID123456790

 

国家

使用广告平台发送的 IP 地址确定安装国家/地区

字串:US,UK,ZA

 

campaign

广告系列名称使用从广告平台回调的d-network-campaign- name 填充

字符串:UA_US_23 +

 

campaign_id

使用广告平台回调中发送的广告系列 ID 填充广告系列 ID

字串:3456745

 

redownload

可能的值:true,false

当 redownload = true, 意味用户从应用商店再次下载App

Boolean 值:true / false

 

skad_ambiguous _event

广告主更改信息中心中的 SKAdNetwork 设置后的前 48 小时内收到的事件。由于 SKAdNetwork AppsFlyer 使用了各种计时器,因此无法准确地映射事件。

Boolean 值:true / false

 

skad_campaign_id

原始 SKAdNetwork 回调提供的 SKAdNetwork 广告系列 ID

56, 23

 

af_skad_nonce

唯一的随机标识符,使合作伙伴能够识别重复的回调

 

 

event_id

广告平台定义的应用内事件名称/ID。   

 

transaction_id

SKAdNetwork 回传 transaction ID

注意: 广告客户必须明确允许我们与您共享transaction_id。 请广告主在AppsFlyer后台的 对接 模块进行操作。

 

 

 

ad_network_adset_id 字符串

广告组ID

广告平台
ad_network_adset_name 字符串

广告组名称

广告平台
ad_network_ad_name 字符串

广告创意名称

广告平台
ad_network_ad_id 字符串

广告创意ID

 
回调给广告平台的宏

SKAd 回调示例

AppsFlyer 发送的激活 SKAd 回调示例

http://YourCompanyDomain.com/event?site_id=(publisher-id)&install_time=(timestamp)
&event_time=(timestamp)&skan_ad_network_time=(timestamp)
&skan_af_received_time=(timestamp)
&attribution_provider=skadnetwork
&app_id=(id123456789)&country=(ZA)&campaign=(campaign-name)
&campaign_id=(campaign-id)&skad_ambiguous_event=(boolean)
&redownload=(boolean)
&af_skad_nonce=(uuid)

AppsFlyer 发送的应用内事件 SKAd 回调示例

http://YourCompanyDomain.com/event?site_id=(publisher-id)&install_time=(timestamp)
&event_time=(timestamp)&skan_ad_network_time=(timestamp)
&skan_af_received_time=(timestamp)&revenue=(value)
&currency=(code)&event_name=(event-name)&attribution_provider=skadnetwork
&app_id=(id123456789)&country=(ZA)&campaign=(campaign-name)
&campaign_id=(campaign-id)&skad_ambiguous_event=(boolean)
&redownload=(boolean)
&af_skad_nonce=(uuid)

如何测试

适用于SKAdNetwork的AppsFlyer解决方案已经上线并可以使用。若要测试与AppsFlyer的对接,可使用以下任一方法: 

  • 真实的SKAdNetwork回调:基于广告平台收到的实际SKAdNetwork信息
  • 模拟回调:基于AppsFlyer的测试应用

要从iOS设备接收真实的SKAdNetwork回调,广告网络需要完成以下工作:

接收模拟回调:

  • 邮件联系 integrations@appsflyer.com申请使用测试App进行SKAdNetwork模拟回调测试。
  • 在邮件中明确测试AppID。

真实环境测试

使用此方法,广告平台将有真实广告开启的广告主App的SKAd实际信息发送给AppsFlyer。 

操作方 行动
广告平台 联系您的AppsFlyer合作伙伴拓展经理(或通过电子邮件发送至integations@appsflyer.com)来提供您的苹果 SKAdNetwork网络ID。
广告平台和AppsFlyer 确认参与测试的客户(已集成了最新的AppsFlyer SDK)。
广告平台 广告开启后,使用本文介绍的方法之一,将广告主应用的SKAd回发发送到AppsFlyer。
AppsFlyer 根据广告客户设置的转化价值映射关系,将解码后的应用内事件信息发送到广告平台。
测试对接
操作方 行动
广告平台 测试结束后,告知AppsFlyer在指定期间内为测试客户向AppsFlyer发送的SKAd回调的数量。
AppsFlyer 对比收到的回调数量与广告平台发送的数量。
AppsFlyer

通知广告平台在解码转化值后向广告平台发送的回调事件类型和数量:

  • 激活/卸载重装后激活
  • 应用内事件
注意: 如果您使用同一接口接收概率模型归因和SKAdNetwork归因的回调,请确保使用回调参数attribution_provider = skadnetwork 进行过滤, 以将SKAd Network回调与其他回调区分开。
AppsFlyer和广告平台  [可选]为了进行更深入的验证,AppsFlyer与广告平台络分享包含回调记录CSV文件。 
测试成功标准:

 模拟回调

  • 使用此方法,广告渠道先将AppsFlyer预先准备的测试应用的回调内容发送到AppsFlyer(如下表),AppsFlyer再把解码后的转化信息回调给广告渠道。
  • 每个测试app都有一个不同的转换值映射,如表中所示。
App ID 转化映射模式 示例
id888707085 收入映射模式,且转化值每增加1,代表收入增加$1 如果转化价值= 7,AppsFlyer解码后回调:
  • 1次激活
  • 1次价值为$ 7的付费事件回调
id888707086 应用内事件模式,且记录以下事件:
  • af_level_complete
  • af_login
  • af_purchase
  • af_register
  • af_subscription
  • af_custom_event
如果转化值=63,AppsFlyer解码后回调以下事件各1次:
  • 1次激活
  • af_level_complete
  • af_login
  • af_purchase
  • af_register
  • af_subscription
  • af_custom_event
id888707087 互动模式,衡量付费事件 如果转换值= 3,AppsFlyer解码后回调:
  • 1次激活
  • 3次付费事件(无金额)
操作方 行动
广告平台 联系您的AppsFlyer合作伙伴拓展经理(或通过电子邮件发送至integations@appsflyer.com)来提供您的苹果 SKAdNetwork网络ID。
广告平台
  • 用上表中列出的测试应用程序发送数十个模拟的回调。 
  • 模拟回调里使用上表中列出的app_id和转换值。 
  • 此时由于广告网络无法生成Apple兼容的签名,因此模拟的回调不必包括签名字段。AppsFlyer不会验证模拟回调中的签名。
  • AppsFlyer支持广告平台使用POST或REDIRECT方法回调。
AppsFlyer 对模拟回调中的转化值进行解码并再次回发给广告平台
操作步骤
操作方 行动
AppsFlyer 处理广告平台发来的模拟回调并将解码后信息发送到广告平台。
广告平台
  • 广告平台接收解码后的回调。
  • 确认收到的AppsFlyer回调与预想的事件回调内容完全一致。比如,应用ID为888707087的转化值为3,则广告网络收到了3个付费事件的回发。
测试成功标准:

说明

有关必填字段,功能扩展,认证等的说明。

常见问题解答

关于回调的问题及解答

这些添加的字段是强制的吗?

就目前而言,即使缺少一个或多个添加参数,我们也将对其进行处理。考虑到出于以下原因的信息:

  • 广告广告系列ID :如果我们与您对接了广告消耗,则会使用您的广告系列ID进行报告。
  • 广告广告系列名称:部分广告主关联广告系列名称而非广告系列ID。
  • IP地址:地理位置解析需要。
  • 时间戳:帮助我们将安装归因于正确的日期。

我们可以发送广告系列ID或广告系列名称,但不同时发送两者吗?

请参阅上一个答案。考虑使用相同的值填充ID和名称。

我们正在使用添加数据维度后转发的方式。是否可以添加不在AppsFlyer规范中的转化值?

可以。如果归因签名有效,我们将处理回调并忽略其他信息

SKAdNetwork回调模板是否不同于现有的回调模板?

是的。工作流程和结构不同。

我们是否会收到与同一安装相关的SKAdNetwork回传和概率/确定性建模回发,即重复报告同一安装?

是的。对于每种情况,我们都会记录归因于您的安装,无论使用哪种方法,我们都会向您发送回调。

然后使用attribution_source区分SKAdNetwork回发。

 

是否需要处理来自AppsFlyer的回调?

不。请考虑一下,最好的优化广告的方式是根据回调中的用户质量。

我们是否应该调用AppsFlyer归因链接,或者发送包含SKAdNetwork有效信息和丰富数据的回调就已经足够?

向我们发送SKAdNetwork有效信息和丰富的数据就足够了。

如何在AppsFlyer仪表板中获得SKAdNetwork合作伙伴的认证?

  • 使用本文列出的方法之一完成集成
  • 使用AppsFlyer作为归因合作伙伴,向我们发送应用的回调

SKAdNetwork限制使用100个campaign ID,对广告平台有什么影响

广告系列ID 1-100的限制与您在Apple中对广告系列进行签名和编号的方式有关。这意味着您可以任何时候,拥有100个同时进行的独立广告系列。我们支持您使用实际的广告系列名称和ID丰富SKAdNetwork的回调信息。这意味着在收到SKAdNetwork回调时,您需要将SKAdNetwork广告系列ID映射到实际广告系列ID。这样做意味着100个ID的限制不会限制您在AppsFlyer中衡量的广告活动数量,前提是给定应用程序同时进行的广告活动不超过100个。 

这篇文章有帮助吗?