服务器到服务器事件 API

  • 开发商

简介

此 API 允许您发送应用外发生的事件或者应用内发生但未通过 AppsFlyer SDK 发送的事件。例如, 如果您同时拥有网站和移动应用, 则可以在 AppsFlyer 中同时记录这两个平台的所有事件。

要格外注意 iOS 上的应用 ID 必须包含起其ID中的前缀 "id",否则请求虽以 HTTPS 200 OK 结束,但不会记录事件。

 重要信息!

JSON 有效负载的最大值不应超过1K。

JSON 有效负载必须作为字符串传递,并且必须把事件值字符串化。

确保 JSON有效负载包含该参数 "af_events_api" :"true"
该参数可以确保该事件结构为详细应用内事件,从而可以将事件值自动映射到合作伙伴

请参见下面的示例。

方法:POST

抬头 - "authentication"= {dev-key}

开发者密钥位于:控制面板 >> 应用设置 >> 开发者密钥

iOSAndroid
{
  "appsflyer_id": {This is a mandatory field, AppsFlyer Device ID must be used }, // e.g. 1415211453000-6513894
  "idfa":{idfa},
  "customer_user_id": {customer_user_id}, // Customer User ID optional parameter
  "bundle_id":{bundle_id},
  "eventName": {The event name}, // e.g. "af_purchase"
  "eventValue": {A JSON containing a rich in-app event value - must be stringfied},
  "{

    \"af_revenue\":\"6\",
    \"af_content_type\":\"wallets\",
    \"af_content_id\":\"15854\"

  }",
  "eventCurrency": {Event currency}, // e.g "USD"
  "ip": {device IP},
  "eventTime": {Event timestamp in UTC}, // e.g "2014-05-15 12:17:00.000"
  "af_events_api" :"true"
}

 注意

在生成 URI 前,所有保留的字符 (https://tools.ietf.org/html/rfc3986#section-2.1) 必须以百分比编码。

参数

  1. 必要参数: appsflyer_id (AppsFlyer设备 ID)、eventNameeventValue 和 af_events_api
  2. 高度推荐的参数: iOS 的 idfa 和 Android 的advertising_id
    若要把自然用户的应用内事件与外部合作伙伴相映射,则这些参数是强制的。此外,某些功能 (如受众) 依赖于设备 ID 来细分用户并更新网络。
  3. 可选-事件值可以是一个空值, 即 "事件值": ", (不需要空格)
  4. 可选-IP 地址( ip) 应为移动设备的 IP (在事件发生期间)
  5. 可选 - Customer User ID 字段 (customer_user_id) 是用户标识符参数,映射至原始报告中的Cusomer User ID 字段。客户用户 ID SDK API 自动将该值附加于所有 SDK 原生应用内事件。确保包含该字段,让您所有 S2S 事件均有相同功能。

准备参数数据

需要后端逻辑来获取上述参数的某些值。获取这些值的推荐流程如下:

使用客户用户 ID 映射 AppsFlyer ID

AppsFlyer ID是服务器到服务器事件消息中的必要参数。要想轻松了解哪个用户实施了哪个事件,执行下述操作即可:

  1. 当用户安装应用的时候设置客户用户 ID
  2. 通过导出数据Pulll API 下载安装的原始数据报告
  3. 把内部系统中的客户用户 ID 与原始数据报告中的客户用户 id 进行匹配以获取 AppsFlyer ID
  4. 将 AppsFlyer ID 映射到内部的客户用户 ID (对将来使用很重要)

一旦完成AppsFlyer ID 与内部客户用户 ID的映射之后,就可以轻松地知道哪个用户实施了哪个事件。随后,您也可以获得AppsFlyer ID 以及其他值(事件值、事件货币类型、事件时间等),并可以发送服务器到服务器的事件。

确定事件时间

服务器到服务器事件可实时或加事件时间戳发送。

您可使用可选的 eventTime 参数,明确事件发生的时间(按 UTC 时区)。如果消息不含参数,AppsFlyer 则使用所收到 HTTPS 消息中的时间戳。

eventTime 格式为”yyyy-MM-dd HH:mm:ss.SSS“(例如"2014-05-15 12:17:00.000")

在发送带有时间戳的事件时,若要这些事件按它们的实时戳来记录 (实际发生时间) ,则必须在第二天凌晨 2点(UTC) 前发送到 AppsFlyer。

未在凌晨2:00 前发送的、含过去时间戳的事件,则按发送时间进行记录。

在UTC 2AM之前发送的带时间戳的事件

触发的事件:2 May @ 22:00

发送到 AppsFlyer 服务器的事件:3 May @ 01:00

AppsFlyer 平台记录的时间是事件的实际触发时间 (2 May @ 22:00)。

在UTC 2AM之后发送的带时间戳的事件

触发的事件:2 May @ 22:00

发送到 AppsFlyer 服务器的事件:4 May @ 09:00

按发送到 AppsFlyer 服务器时间、而非事件发生 (4 May @ 09:00) 时间记录于 AppsFlyer 平台。

带有未来时间戳的事件

带有未来时间戳的事件始终会按其送达AppsFlyer的时间来记录,而不是按有效负载的事件时间戳。

计时事件-视觉时间线

Server-to-Server-Events.PNG

 注意

S2S 请求的最大数量为每分钟 60K 或每秒 1K。如果您有不同要求,请联系您的客户经理。

服务返回代码

200
没问题,请求由 Appsflyer 系统处理时。
401
未授权,身份验证标头中提供的 key不是针对该应用的 dev key 时。
400
错误请求,请求至少有一项验证标准未达到时。
500
内部服务器错误,这表示服务器错误。

如果您的服务器受防火墙保护,您需要把接收到返回数据的 AWS IP 地址范围加入白名单,以接受返回消息。

请求正文示例

{
  "appsflyer_id": "1415211453000-6513894",
	"advertising_id": "38412345-8cf0-aa78-b23e-10b96e40000d",
	"eventName": "af_purchase",
	"eventValue": 
	"{
		\"af_revenue\": \"6\",
		\"af_content_type\": \"wallets\",
		\"af_content_id\": \"15854\",
		\"af_quantity\" :\"1\"
   }",
	"eventCurrency": "USD",
	"ip": "1.2.3.4",
	"eventTime": "2014-05-15 12:17:00.000",
	"af_events_api" :"true"
}


本示例中,AppsFlyer 收到一个 S2S 应用内事件。它表示含收入的购买事件,并包含内容类型等其他属性。

特殊案例

发送负收入

如果要发送收入为负数的事件(如取消支付或退款之类的),可以在收入参数中指定负值。例如:

{
  "appsflyer_id": "1415211453000-6513894",
	"advertising_id": "38412345-8cf0-aa78-b23e-10b96e40000d",
	"eventName": "cancel_purchase",
	"eventValue": 
	"{
		\"af_revenue\": \"-6\",
		\"af_content_type\": \"wallets\",
		\"af_content_id\": \"15854\",
		\"af_quantity\" :\"1\"
   }",
	"eventCurrency": "USD",
	"ip": "1.2.3.4",
	"eventTime": "2014-05-15 12:17:00.000",
	"af_events_api" :"true"
}

发送没有事件值的事件

如果要发送不带事件值的事件, 只需将事件值设为空白字符串: "event _ value": ""

AppsFlyer 将根据广告主的配置,向媒体渠道发送此类详细应用内事件,实现高级定向、优化和受众创建。

获取 AppsFlyer 设备 ID

appsflyer_id 是服务器到服务器事件消息中的必要参数。AppsFlyer 使用该参数,将事件归入源设备及已归因的媒体渠道。

有多种方式可获取该 ID。

  1. 从使用 AppsFlyer SDK API的移动设备中 (Android/iOS)
  2. 通过 Pull API 或 Push API(点击链接,详细了解 Push API Pull API
  3. 导出原始数据安装报告

 提示

测试 S2S 消息时,如果您使用原始数据或者 Pull API 或 Push API 时,则请寻找含媒体渠道”s2s_test“的记录。这是您的测试设备,其 AppsFlyer 设备 ID 是您所需的 ID。

自然量与非自然量的区别

当发送S2S应用内事件时,AppsFlyer会自动关联其他与这些事件相关的数据。其他数据来自应用内事件之前的安装事件。

这意味着 AppsFlyer 将某些数据与非自然 S2S 应用内事件相关联, 但与自然S2S 应用内事件无关。

 示例

例如, 如果比较非自然和自然 S2S 应用内事件的原始数据报告, 则非自然事件会包含自然应用内事件所不包含的数据。

非自然应用内事件包括的数据有广告平台、广告系列、归因触及类型、触及时间等。

另一方面, 自然应用内事件来自于自然安装。自然安装没有与广告系列、媒体渠道或归因触达类型及时间相关的数据。

这篇文章有帮助吗?
11 人中有 4 人觉得有帮助

页面内容: