Server-to-Server Events API

Введение

Цель этого API — передача событий, которые происходят вне мобильного приложения, непосредственно на сервер AppsFlyer. Например, если у вас есть и веб-, и мобильный интерфейсы, в AppsFlyer вы можете регистрировать все события, происходящие в обеих средах. 

 Примечание

В качестве типа контента необходимо указывать application/json.

URL: https://api2.appsflyer.com/inappevent/{app_id}  

Пример для Android: https://api2.appsflyer.com/inappevent/com.appsflyer.myapp

Пример для iOShttps://api2.appsflyer.com/inappevent/id123456789

Обратите внимание, что в iOS идентификатор App ID должен иметь префикс id. В противном случае событие не будет зарегистрировано, несмотря на то, что кодом ответа на запрос будет HTTPS 200 OK.

 Important!

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}

Для просмотра ключа разработчика выберите Панель управления >> Настройки приложения >> Ключ разработчика

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), eventName, eventValue и 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.

Регистрация времени событий

Межсерверные события можно передавать в режиме реального времени или в фоновом режиме

 Примечание

Межсерверные события невозможно передавать непосредственно из JavaScript. Для отправки запроса AppsFlyer необходимо создать локальный сервер.

Для указания времени возникновения события (в часовом поясе UTC) можно использовать дополнительный параметр eventTime . Если данный параметр не включен в сообщение, AppsFlyer будет использовать метку времени из полученного HTTPS-сообщения . 

Формат eventTime: "гггг-ММ-дд ЧЧ:мм:сс.ССС" (например, "2014-05-15 12:17:00.000")  

Чтобы при использовании фонового режима события были записаны с отметкой реального времени, они должны быть отправлены в AppsFlyer до 02:00 (UTC) следующего дня.   

 Примечание

Максимальное количество межсерверных (S2S) запросов составляет 60000 в минуту или 1000 в секунду. Если ваши требования отличаются, обратитесь к вашему менеджеру.


События с меткой прошедшего времени, не отправленные до 2:00, записываются с указанием фактического времени отправки.

Пример 1

Время возникновения события: 2 мая, 22:00

Время отправки события на серверы AppsFlyer: 3 мая, 01:00

Событие регистрируется на платформе AppsFlyer с фактическим временем возникновения (2 мая, 22:00).

Пример 2
Время возникновения события: 2 мая, 22:00

Время отправки события на серверы AppsFlyer: 4 мая, 09:00

Событие регистрируется на платформе AppsFlyer с временем отправки на серверы AppsFlyer, а не с временем возникновения (4 мая, 09:00).

Ответные коды с сервера

200
OK when the request has been processed by the AppsFlyer system.
401
нет разрешения, ключ, указанный в заголовке аутентификации, не является ключом разработчика (dev-key) для данного приложения.
400
ошибка запроса при ошибке как минимум по одному из критериев валидации
500
внутренняя ошибка сервера, указывает на возникновение ошибки на сервере

Если серверы защищены брандмауэром, для получения ответных сообщений необходимо разблокировать входящие ответы для диапазонов IP-адресов AWS .

Пример тела запроса

{
    "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 может отправлять подобные rich in-app события медиа источникам для улучшения таргетинга, оптимизации и создания аудитории соответственно настройкам рекламодателя.

Получение AppsFlyer Device ID

В сообщениях межсерверных событий параметр appsflyer_id является обязательным. AppsFlyer использует данный параметр для атрибуции события исходному устройству и атрибутированному медиа источнику. 

Есть несколько способов получения этого ID.

1. От мобильного устройства с помощью API SDK AppsFlyer (Android / iOS)

2. С помощью API Pull или Push (см. по ссылкам дополнительные сведения об API Push и API Pull)

3. Путем экспорта отчета о необработанных данных установки

 Совет

Если при тестировании межсерверных (S2S) сообщений используются необработанные данные или API Pull или Push, выполните поиск записи с медиа-источником "s2s_test". Это ваше тестовое устройство, а его идентификатор AppsFlyer Device — это необходимый ID.

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 4 из 10