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. В списке Choose type выберите S2S.

  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 не поддерживает режим Sandbox для интеграции server2server. Поэтому для Sandbox Dev Key нужно использовать отдельное приложение/аккаунт в AppsFlyer. Если вы хотите отправлять sandbox-события в то же приложение, просто используйте один и тот же ключ для production и sandbox. :::

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

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

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

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

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

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

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

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

Инициализируйте AppsFlyer SDK и дождитесь колбэка с UID, прежде чем идентифицировать пользователей в Adapty. В противном случае appsflyer_id попадёт во временный анонимный профиль Adapty, созданный при активации, и не всегда будет перенесён в идентифицированный профиль. Если это произойдёт, передача данных о доходах из AppsFlyer будет молча завершаться ошибкой.

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

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 / имя пакета приложения.
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Идентификатор оригинальной транзакции.
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 и версии учётных данных.

Ознакомьтесь с руководством по миграции или замените учётные данные на актуальные здесь.