Server-to-Server Events API

简介

该 API 旨在允许您将发生在移动应用之外的事件直接发送到 AppsFlyer 服务器。 例如,如果您有 Web 和移动两个界面,您可记录 AppsFlyer 中两个媒介的所有事件。 

一定要格外注意 iOS 上的应用 ID 包含起引导作用的 "id"并置于 ID 之前,否则请求以 HTTPS 200 OK 结束,但不会注册事件。

 重要信息!

The JSON payload must be passed as a string and the event value must be stringified.

Make sure that the JSON payload includes the parameter "af_events_api" :"true"
This parameter ensures that the event is structured as a rich event to enable automatic mapping of the event values to various partners.

See examples below.

方法:POST

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

密钥位于:Dashboard >> App Settings >> Dev Key

iOS Android
{
    "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) 必须以百分比编码。

Parameters

  1. 必要参数: appsflyer_id (AppsFlyer Device id)、eventNameeventValue 和 af_events_api
  2. Highly recommended parameters: idfa for iOS and advertising_id for Android.
    If you wish to map your in-app events from organic users with external partners, these parameters are MANDATORY. 
  3. Optional - eventValue can be with an empty value, i.e., "eventValue":"", (no space is needed)
  4. Optional - IP address (ip) should be the IP of the mobile device (during the event occurrence)
  5. Optional - The customer user ID field (customer_user_id) is a user identifier parameter, mapped to the Customer User ID field in the Raw Reports. The Customer User ID SDK API attaches this value automatically to all SDK originated in-app events. Make sure to include this field will ALL your S2S events to enjoy the same functionality.

确定事件时间

服务器到服务器事件可实时或按批处理模式发送。 

 注意

使用 S2S 后,您无法从 JavaScript 直接发送事件。您必须创建本地服务器,以向 AppsFlyer 发送请求。

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

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

在批处理模式中,对于用真实发生时间戳来记录的事件,必须在第二天凌晨 02:00 (UTC) 发送到 AppsFlyer。  

 注意

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


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

示例 1

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

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

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

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

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

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

服务返回代码

200
OK when the request has been processed by the AppsFlyer system.
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 将根据广告主的配置,向媒体渠道发送此类富应用内事件,实现高度定向、优化和受众创建。

获取 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。

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