AppsFlyer
AppsFlyer — ведущая платформа для мобильной атрибуции и маркетинговой аналитики. Это сторонний сервис, который собирает и систематизирует данные из маркетинговых кампаний, позволяя компаниям отслеживать эффективность своих кампаний в одном месте. Adapty предоставляет полный набор данных, позволяющий отслеживать события подписок из сторов в одном месте. С Adapty вы легко увидите, как ведут себя ваши подписчики, узнаете их предпочтения и сможете использовать эту информацию для точечной и эффективной коммуникации с ними. Интеграция позволяет отслеживать события подписок в AppsFlyer и точно анализировать, сколько дохода приносят ваши кампании.
Интеграция между Adapty и AppsFlyer работает двумя основными способами.
- Получение данных атрибуции из AppsFlyer После того как вы настроите отправку атрибуции AppsFlyer в Adapty в коде приложения, Adapty начнёт получать данные атрибуции от AppsFlyer. Вы можете легко просматривать эти данные на странице профиля пользователя.
- Отправка событий подписки в AppsFlyer Adapty может отправлять в AppsFlyer все события подписки, настроенные в вашей интеграции. Это позволит отслеживать эти события в дашборде AppsFlyer и оценивать эффективность рекламных кампаний.
Настройка конфигурации
Подключение Adapty к AppsFlyer
Чтобы настроить интеграцию с AppsFlyer:
-
Откройте Integrations -> AppsFlyer в дашборде Adapty.
-
Включите переключатель, чтобы активировать интеграцию.
-
Следующий шаг — указать учётные данные. Для iOS найдите App ID: скопируйте Apple ID из App Store Connect (для этого откройте страницу вашего приложения в App Store Connect, перейдите на страницу App Information в разделе General и найдите Apple ID в левом нижнем углу экрана).
3.2. Вставьте скопированный Apple ID в поле iOS App ID в дашборде Adapty.
Если вы используете AppsFlyer API 2, необходимо перейти на API 3, так как предыдущая версия скоро будет упразднена AppsFlyer. Для этого в списке AppsFlyer S2S API выберите API 3.
- Для iOS и Android откройте сайт AppsFlyer и войдите в аккаунт.
- Нажмите Your account name -> Security Center в правом верхнем углу дашборда.
- В окне Manage your account security нажмите кнопку Manage your AppsFlyer API and S2S tokens.
- Если у вас уже есть S2S-токен, перейдите к шагу 12. Если нет, нажмите кнопку New token.
-
В окне New token введите название токена. Оно нужно только для вашего удобства.
-
В списке Choose type выберите S2S.
-
Нажмите кнопку Create new token, чтобы сохранить новый токен.
-
В окне Tokens скопируйте S2S-токен.
-
В дашборде Adapty вставьте скопированный S2S-ключ в поля Dev key for iOS и Dev key for Android.
-
Нажмите кнопку Save, чтобы сохранить изменения.
AppsFlyer не поддерживает режим Sandbox для интеграции server2server. Поэтому для Sandbox Dev Key нужно использовать отдельное приложение/аккаунт в AppsFlyer. Если вы хотите отправлять sandbox-события в то же приложение, просто используйте один и тот же ключ для production и sandbox. :::
По умолчанию Adapty сопоставляет некоторые события со стандартными событиями AppsFlyer. При такой конфигурации AppsFlyer может передавать события в каждую рекламную сеть, которую вы используете, без дополнительной настройки. Ещё один важный момент: AppsFlyer не поддерживает события, которые старше 26 часов. Поэтому, если событие датировано более чем 26 часами назад, Adapty всё равно отправит его в AppsFlyer, но дата и время события будут заменены на текущую временну́ю метку.
Настройка событий и тегов
Под полями с учётными данными находятся три группы событий, которые можно отправлять в AppsFlyer из Adapty. Просто включите нужные. Полный список событий, доступных в Adapty, смотрите здесь.
Мы рекомендуем использовать названия событий по умолчанию от 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_id | String | AppsFlyer ID (собирается через SDK). |
eventName | String | Название события AppsFlyer (сопоставленное с событием Adapty). |
eventTime | String | Дата и время события (UTC, формат YYYY-MM-DD HH:MM:SS). |
eventValue | String | JSON-строка с деталями события (см. ниже). |
os | String | Версия ОС. |
bundleIdentifier | String | Bundle ID / имя пакета приложения. |
customer_user_id | String | Customer User ID пользователя. |
eventCurrency | String | Код валюты (например, “USD”). |
ip | String | IP-адрес пользователя. |
advertising_id | String | Только Android. Google Advertising ID. |
idfa | String | Только iOS. ID for Advertisers. |
idfv | String | Только iOS. ID for Vendors. |
att | String | Только iOS. Статус App Tracking Transparency (например, “3” — разрешено). |
Параметр eventValue — это JSON-строка, содержащая следующие поля: | ||
| Параметр | Тип | Описание |
| :------------------ | :------- | :---------------------------------------------------------------- |
af_content_id | String | ID продукта в сторе. |
af_order_id | String | Идентификатор оригинальной транзакции. |
store_country | String | Код страны пользователя в сторе. |
profile_country | String | Код страны на основе IP-адреса пользователя. |
af_content_type | String | Всегда in_app, если присутствует доход. |
af_revenue | String | Сумма дохода, отформатированная до 4 десятичных знаков. |
af_currency | String | Код валюты. |
af_quantity | String | Всегда 1, если присутствует доход. |
Устранение неполадок
Расхождение в данных о выручке
Если между Adapty и AppsFlyer есть расхождение в данных о выручке, это может быть связано с тем, что не все пользователи работают с версией приложения, содержащей Adapty SDK. Чтобы обеспечить согласованность данных, вы можете обязать пользователей обновить приложение до версии с Adapty SDK.
Отсутствующие данные интеграции
Если отправка событий завершается неудачей, это обычно связано с отсутствием данных интеграции. Проверьте следующее:
- В вашем приложении установлен AppsFlyer SDK.
- Вы вызываете метод
getAppsFlyerUID.
Ошибка аутентификации
Если в консоли появляется ошибка Failed to authenticate, это может быть вызвано несовпадением версии AppsFlyer и версии учётных данных.
Ознакомьтесь с руководством по миграции или замените учётные данные на актуальные здесь.