API событий от сервера к серверу для мобильных приложений (S2S-mobile)

Краткий обзор: Отправляйте события с ваших серверов в AppsFlyer для измерения мобильных событий, происходящих за пределами приложения.

altS2S_us-en.pngalt

API событий от сервера к серверу для мобильных приложений

Для iOS приложений, начиная с версии iOS 14, необходимо передавать параметр операционной системы (os). 

Платформа AppsFlyer атрибутирует и регистрирует события мобильных приложений, отправленные SDK (пакет средств разработки ПО) и через API. Используйте API S2S для отчетности по событиям, происходящим за пределами приложения; например, когда пользователь продлевает свою подписку через ваш веб-интерфейс. S2S события, после их регистрации, доступны на всей платформе, включая дашборды, необработанные данные и аналитику. Для веб-событий PBA смотрите Web S2S для PBA.

AppsFlyer заполняет S2S события следующими данными:

  • Ценности, значения, отправленные в S2S сообщении
  • Некоторые значения атрибуции установки от AppsFlyer, такие как время установки и медиа-источник.

Чтобы отправить события через API, попросите вашего разработчика следовать инструкциям API для передачи событий сервер-сервер.

Заполнение параметров

Разница между органическими и неорганическими событиями

Когда AppsFlyer обрабатывает события в приложении S2S, поля атрибуции заполняются с использованием идентификатора AppsFlyer, чтобы идентифицировать связанное событие установки, предшествовавшее событиям в приложении.

Это означает, что некоторые данные, которые AppsFlyer ассоциирует с неорганическими S2S in-app событиями, не ассоциируются с органическими S2S in-app событиями.

Пример

Например, если сравнить отчеты о необработанных данных неорганических и органических S2S in-app событий, то неорганические события содержат данные, которых нет у органических in-app событий.

Неорганические in-app события включают данные о медиа-источнике, кампании, типе и времени атрибутированного касания.

С другой стороны, органические in-app события следуют за органической установкой. Органические установки не содержат данных, связанных с кампанией, медиа-источником, типом касания и временем установки.

Сопоставление идентификатора AppsFlyer с идентификатором пользователя клиента (CUID)

Для получения значений для заполнения параметра требуется логика на бэкенде. Ниже описано, как можно получить идентификатор AppsFlyer:

  • Идентификатор AppsFlyer обязателен и используется для атрибуции событий.
  • Он генерируется, когда пользователь впервые устанавливает мобильное приложение.
  • Чтобы сопоставить ваш CUID с идентификатором AppsFlyer, необходимо установить CUID в приложении. 

Для упрощения отслеживания, какой пользователь выполнил какое событие, реализуйте следующую последовательность действий:

  • Установите идентификатор пользователя клиента, когда пользователь устанавливает приложение.
  • Отчеты о необработанных данных AppsFlyer содержат CUID и идентификатор AppsFlyer. Для этого используйте один из инструментов доставки данных или push AppsFlyer API. 
  • Используйте отчеты о необработанных данных для сопоставления CUID с идентификатором AppsFlyer. 
  • Идентификатор AppsFlyer доступен в SDK, интегрированном в ваше приложение (Android/iOS).
  • Сопоставьте идентификатор AppsFlyer с идентификатором пользователя клиента в ваших внутренних системах (важно для будущего использования).

После сопоставления идентификатора AppsFlyer с вашим CUID вы сможете связать пользователя с выполненными событиями. Затем вы можете получить другие значения (значение события, валюту события, время события и т. д.) и отправить внутреннее событие приложения сервер на сервер.

Получение идентификатора AppsFlyer

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

Отметка времени событий S2S

altсхема логики отметки времениalt

Когда S2S события поступают в AppsFlyer оптом, им присваивается временная метка на основе ценностей, значений их свойства eventTime и времени прибытия. Свойство eventTime указывает время возникновения внутреннего события приложения.

При поступлении события временно маркируются следующим образом:

  • Если параметр eventTime не включен в запись события, время события устанавливается по времени прибытия HTTP-сообщения.
  • События, поступившие до 02:00 UTC, отмечаются значением eventTime. Это означает, что события должны быть сообщены либо в день их наступления, либо на следующий день до 02:00 UTC, чтобы быть отмеченными значением eventTime.
  • События, которые произошли предыдущим днем или раньше и пришли после 02:00 UTC, отмечаются временем прибытия (временем вызова API).
  • События с будущим значением eventTime (eventTime > время прибытия):
    • Если указанное eventTime и время прибытия приходятся на один и тот же календарный день, событию присваивается временная метка со значением eventTime.
    • Если указанное eventTime относится к следующему календарному дню, событие помечается по времени прибытия.
  • События с неверным значением eventTime помечаются временем прибытия HTTP-сообщения.

Пример

  • Событие отправляется с eventTime = Понедельник 21:00.
Прибытие в AppsFlyer Временная метка AppsFlyer Примечание
Вторник 01:00 Понедельник 21:00 Прибыло до конца рабочего дня. Время установлено на значение eventTime.
Среда 09:00 Среда 09:00 Прибыло после закрытия бизнеса. Время установлено по времени прибытия.

Отправка с отрицательной выручкой

Могут быть отправлены события с отрицательной выручкой. Например, если покупка была отменена. Параметр af_revenue может иметь отрицательные значения для фиксации таких случаев. 

Если вы заполняете af_quantity, возможно, вам нужно будет указать отрицательное значение в зависимости от логики вашей системы. AppsFlyer не использует af_quantity.

Увеличение объема транзакций данных

При использовании постепенного масштабирования AppsFlyer может поддерживать большой объем транзакций в секунду (TPS) благодаря решениям автоматического масштабирования. Например:

  • Начните с 10 тыс. транзакций в секунду (TPS) и постепенно увеличивайте их количество, используя минимальные интервалы в 1 минуту.
    • 00:00:00 - отправка 10 тыс. TPS (базовый уровень)
    • 00:01:00 - увеличение до 12 тыс. TPS
    • 00:02:00 - увеличение до 14 тыс. TPS
    • 00:03:00 - увеличение до 16 тыс. TPS
    • 00:04:00 - увеличение до 18 тыс. TPS
  • Реализуйте механизм повторных попыток, который будет использоваться при получении ошибок.

Устранение неполадок

События не отображаются на дэшборде

  • Конечная точка: Убедитесь, что используемая конечная точка верна.
  • Убедитесь, что полезная нагрузка содержит обязательные параметры. См. здесь.
  • Убедитесь, что идентификатор AppsFlyer, который вы используете для запуска события, является реальным appsflyer_id и связан с реальной установкой приложения. См. здесь.
  • События S2S не поддерживают много событий в одном запросе S2S. Каждое событие должно быть отправлено как отдельное событие.
    • События можно отправлять асинхронным методом, чтобы сократить время отклика.
  • На обзорном дэшборде диапазон дат относится к дате установки приложения (LTV), а не к дате события.
    • Убедитесь, что вы выбрали правильный диапазон дат.
    • Убедитесь, что диапазон дат дэшборда соответствует дате установки устройства (appsflyer_id), а не дате события.
  • Отчеты о необработанных данных о событиях: диапазон дат относится к дате события, а не к дате установки. 

События не содержат выручку

Если вы отправляете события S2S, но их выручка не регистрируется, убедитесь, что отправляемый вами JSON преобразован в строку. Самая важная часть — это параметр ценности, значения события в JSON. Его необходимо преобразовать в строку, как показано в следующем примере.

"{\"af_revenue\":\"6\" ,\"af_content_type\":\"wallets\"}"

Если событие не преобразовано в строку, то его значение обрабатывается неправильно и выручка не регистрируется.

Значения выручки не должны ни в коем случае форматироваться. Они могут содержать десятичную точку. Не включайте знаки валют или коды, а также разделители ,. Выручка может иметь префикс -.

  • Примеры допустимых значений: 123, -123.45, 123.456
  • Примеры недопустимых значений: 1,234.56, 1,234.

Не все поля заполняются в событиях S2S.

Поля необработанных данных заполняются исключительно значениями, переданными в вызове S2S, в несхожий от полей постбэков, которые могут заполняться значениями, исходящими от события установки.

Следующие поля не могут быть переданы через S2S API и, следовательно, не заполняются для событий S2S в отчетах о необработанных данных:

  • WI-FI
  • Оператор
  • Язык
  • Модель устройства
  • Категория устройства
  • Версия приложения: Вы можете использовать app_version_name.
  • Имя приложения
  • User Agent

S2S события в приложении ошибочно приписываются к органическим.

События S2S, такие как события входа в систему, могут поступать в AppsFlyer сразу после установки приложения и запуска SDK. Однако, если эти S2S события в приложении поступают до того, как AppsFlyer завершает обработку события установки, что обычно занимает 20–30 секунд или более, они могут быть отмечены как неатрибутивные органические события.

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