AppsFlyer

AppsFlyer — ведущая платформа для мобильной атрибуции и маркетинговой аналитики. Это сторонний сервис, который собирает и структурирует данные из маркетинговых кампаний, позволяя компаниям видеть эффективность своих кампаний в одном месте.

Adapty предоставляет полный набор данных, с помощью которого вы можете отслеживать события подписки из сторов в одном месте. С Adapty легко анализировать поведение подписчиков, понимать их предпочтения и выстраивать точечную и эффективную коммуникацию. Интеграция позволяет отслеживать события подписки в AppsFlyer и точно оценивать, сколько дохода приносят ваши кампании.

Интеграция Adapty и AppsFlyer работает в двух направлениях.

  1. Получение данных атрибуции из AppsFlyer
    После того как вы настроите отправку атрибуции AppsFlyer в Adapty в коде приложения, Adapty начнёт получать данные атрибуции от AppsFlyer. Просматривать эти данные можно на странице профиля пользователя.
c2991f6-CleanShot_2023-08-04_at_16.29.202x.webp
  1. Отправка событий подписки в AppsFlyer
    Adapty может отправлять все события подписки, настроенные в вашей интеграции, в AppsFlyer. В результате вы сможете отслеживать эти события прямо в дашборде AppsFlyer — это полезно для оценки эффективности рекламных кампаний.

Настройка конфигурации

Подключение Adapty к AppsFlyer

Чтобы настроить интеграцию с AppsFlyer:

  1. Откройте Integrations -> AppsFlyer в дашборде Adapty.

  2. Включите тумблер, чтобы активировать интеграцию.

  3. Следующий шаг — ввести учётные данные.
    Для iOS найдите App ID: скопируйте Apple ID в App Store Connect (откройте страницу приложения в App Store Connect, перейдите на страницу App Information в разделе General и найдите Apple ID в нижней левой части экрана).

43a5cc6-apple_id.webp

3.2. Вставьте скопированный Apple ID в поле iOS App ID в дашборде Adapty.

61bff5a-appsflyer_iOS_app_id.webp

Если вы используете AppsFlyer API 2, переключитесь на API 3, так как предыдущая версия скоро будет выведена из эксплуатации AppsFlyer. Для этого в списке AppsFlyer S2S API выберите API 3.

  1. Для iOS и Android откройте сайт AppsFlyer и войдите в аккаунт.

  2. Нажмите Your account name -> Security Center в правом верхнем углу дашборда.

1c18c50-appsflyer_security_center.webp
  1. В окне Manage your account security нажмите кнопку Manage your AppsFlyer API and S2S tokens.

  2. Если у вас уже есть S2S-токен, перейдите к шагу 12. Если нет — нажмите кнопку New token.

7934920-appsflyer_new_token.webp
  1. В окне New token введите название токена — оно нужно только для вашего удобства.

  2. Выберите S2S в списке Choose type.

  3. Нажмите кнопку Create new token, чтобы сохранить новый токен.

  4. В окне Tokens скопируйте S2S-токен.

  5. В дашборде Adapty вставьте скопированный S2S-ключ в поля Dev key for iOS и Dev key for Android.

a7d1c31-appsflyer_dev_keys.webp
  1. Нажмите кнопку Save, чтобы сохранить изменения.

    У AppsFlyer нет режима песочницы для server-to-server интеграции. Поэтому для Sandbox Dev Key вам понадобится отдельное приложение/аккаунт в AppsFlyer. Если вы хотите отправлять sandbox-события в то же приложение, просто используйте один и тот же ключ для продакшена и песочницы.

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

Также важно учитывать, что AppsFlyer не поддерживает события старше 26 часов. Если событие произошло более 26 часов назад, Adapty всё равно отправит его в AppsFlyer, но дата и время события будут заменены на текущий timestamp.

Настройка событий и тегов

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

1b0c777-CleanShot_2023-08-11_at_14.56.362x.webp

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

Adapty отправляет события подписки в AppsFlyer через server-to-server интеграцию, что позволяет просматривать все события подписки в дашборде AppsFlyer и связывать их с вашими рекламными кампаниями.

Подключение приложения к AppsFlyer

После выполнения описанных выше шагов вызовите метод updateAttribution, чтобы сохранить данные атрибуции, и используйте Adapty.setIntegrationIdentifier() для установки идентификатора интеграции.

Параметр networkUserId является обязательным.

Структура события

Adapty отправляет выбранные события в AppsFlyer через POST-запрос с JSON-телом:

  • API v2: https://api2.appsflyer.com/inappevent/{app_id}
  • API v3: https://api3.appsflyer.com/inappevent/{app_id} (рекомендуется)

Каждое событие имеет следующую структуру:

{
  "appsflyer_id": "1699887556000-6192770",
  "eventName": "subscription_renewed",
  "eventTime": "2024-03-01 12:00:00",
  "eventValue": "{\"af_content_id\":\"yearly.premium.6999\",\"af_order_id\":\"GPA.3383-4699-1373-07113\",\"store_country\":\"US\",\"profile_country\":\"US\",\"af_content_type\":\"in_app\",\"af_revenue\":\"9.9900\",\"af_currency\":\"USD\",\"af_quantity\":\"1\"}",
  "os": "17.0.1",
  "bundleIdentifier": "com.example.app",
  "customer_user_id": "user_12345",
  "eventCurrency": "USD",
  "ip": "192.168.100.1",
  "advertising_id": "00000000-0000-0000-0000-000000000000",
  "idfa": "00000000-0000-0000-0000-000000000000",
  "idfv": "00000000-0000-0000-0000-000000000000",
  "att": "3"
}

Где:

ПараметрТипОписание
appsflyer_idStringAppsFlyer ID (собирается через SDK).
eventNameStringНазвание события в AppsFlyer (сопоставлено с событием Adapty).
eventTimeStringДата и время события (UTC, формат YYYY-MM-DD HH:MM:SS).
eventValueStringJSON-строка с деталями события (см. ниже).
osStringВерсия операционной системы.
bundleIdentifierStringBundle ID / package name приложения.
customer_user_idStringCustomer User ID пользователя.
eventCurrencyStringКод валюты (например, “USD”).
ipStringIP-адрес пользователя.
advertising_idStringТолько Android. Google Advertising ID.
idfaStringТолько iOS. ID for Advertisers.
idfvStringТолько iOS. ID for Vendors.
attStringТолько iOS. Статус App Tracking Transparency (например, “3” — авторизовано).

Параметр eventValue — это JSON-строка со следующими полями:

ПараметрТипОписание
af_content_idStringID продукта в сторе.
af_order_idStringОригинальный ID транзакции.
store_countryStringКод страны пользователя в сторе.
profile_countryStringКод страны по IP пользователя.
af_content_typeStringВсегда in_app, если присутствует доход.
af_revenueStringСумма дохода с точностью до 4 знаков после запятой.
af_currencyStringКод валюты.
af_quantityStringВсегда 1, если присутствует доход.

Решение проблем

Расхождение в доходах

Если данные о доходах в Adapty и AppsFlyer расходятся, это может быть связано с тем, что не все пользователи обновились до версии приложения с Adapty SDK. Чтобы обеспечить согласованность данных, можно принудительно обновить приложение для всех пользователей до версии с Adapty SDK.

Отсутствующие данные интеграции

Если отправка событий завершается ошибкой, как правило, это связано с отсутствующими данными интеграции. Для решения проблемы убедитесь в следующем:

  • В вашем приложении установлен AppsFlyer SDK.
  • Вы вызываете метод getAppsFlyerUID.

Ошибка аутентификации

Если в консоли появляется ошибка Failed to authenticate, это может быть вызвано несоответствием версии AppsFlyer и версии учётных данных.

Воспользуйтесь руководством по миграции или замените учётные данные на актуальные, взятые отсюда.