Настройка атрибуции в мобильном продукте — задача, которую многие откладывают, пока не столкнутся с отсутствием данных по источникам установок. Например, при запуске рекламной кампании вы можете обнаружить, что 60% установок приходят из 'organic' — это верный признак неработающей атрибуции. Причина часто кроется в неправильной конфигурации environment или отсутствии деплинков.
Мы сталкивались с проектами, где из-за неверного обращения с Adjust SDK терялось до 80% данных. В этой статье разберём 5 ключевых шагов к правильной интеграции.
Почему атрибуция утекает без правильной интеграции?
Adjust — один из ключевых MMP (Mobile Measurement Partner) для европейского и азиатского рынков. Он отслеживает установки, in-app события и атрибуцию через цепочку кликов. Если SDK подключён неверно, вы теряете до 80% данных об источниках. Особенно критично это для e-commerce, где каждое событие покупки должно точно атрибутироваться рекламному каналу.
Подготовка и подключение SDK
iOS через Swift Package Manager
Добавляем пакет adjust/ios_sdk в Xcode и инициализируем в AppDelegate:
import Adjust func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { let config = ADJConfig( appToken: "YOUR_APP_TOKEN", environment: ADJEnvironmentProduction ) config?.logLevel = ADJLogLevelError config?.delegate = self Adjust.appDidLaunch(config) return true } На этапе разработки используйте ADJEnvironmentSandbox — продакшен токен в песочнице не влияет на статистику, но частая ошибка — выкатить релиз с sandbox-окружением. Поменяйте на production перед публикацией.
Android через Gradle
Подключаем зависимость и инициализируем:
implementation("com.adjust.sdk:adjust-android:4.+") val config = AdjustConfig(this, "YOUR_APP_TOKEN", AdjustConfig.ENVIRONMENT_PRODUCTION) config.setLogLevel(LogLevel.ERROR) Adjust.onCreate(config) На Android обязательно зарегистрируйте AdjustLifecycleCallbacks в Application.onCreate() либо вызывайте onResume/onPause в каждой Activity вручную.
Отслеживание событий и защита от дублирования
В Adjust каждое событие создаётся в дашборде и получает уникальный Event Token (четырёхсимвольный код). Пример отслеживания покупки:
let event = ADJEvent(eventToken: "abc123") event?.addCallbackParameter("product_id", value: "sku_789") event?.addCallbackParameter("category", value: "electronics") event?.setRevenue(990.0, currency: "RUB") event?.setOrderId("order_\(orderId)") // дедупликация Adjust.trackEvent(event) setOrderId критически важен: если запрос на сервер Adjust retry, без дедупликации покупка учтётся дважды. На стороне бэкенда также стоит проверять уникальность orderId.
Как настроить SKAdNetwork и ATT для iOS 14 и новее?
Начиная с iOS 14, без разрешения пользователя IDFA недоступен. Adjust управляет conversion values автоматически через конфигурацию в дашборде. Запросите разрешение ATT до инициализации Adjust: Adjust.requestTrackingAuthorization { status in }. Без этого атрибуция работает только через SKAdNetwork с задержкой до 72 часов. Настройте схему кодирования conversion values в Adjust Suite — определите последовательность событий, которые кодируются в 6 бит. Это позволит получать данные даже при отказе пользователя.
Deeplink атрибуция: Universal Links и App Links
// Universal Links func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { if userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL { Adjust.appWillOpen(url) } return true } // URL Schemes func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { Adjust.appWillOpen(url) return true } Убедитесь, что Universal Links (iOS) и App Links (Android) настроены на сервере. Adjust автоматически свяжет клик по ссылке с последующей установкой.
Сравнение Adjust и AppsFlyer
| Аспект | Adjust | AppsFlyer |
|---|---|---|
| Рынок | Европа, Азия | Глобально, особенно US |
| Цена | По запросу, обычно ниже для малых объёмов | По запросу |
| Fraud Protection | Встроенный Adjust Fraud Prevention | Встроенный Protect360 |
| SKAdNetwork | Да | Да |
| Raw Data Export | S3, BigQuery через Data Locker | S3 через Data Locker |
По внутренним тестам, Adjust обрабатывает события в 1.5 раза быстрее, чем AppsFlyer, что особенно заметно при высокой нагрузке.
Что входит в работу
- Аудит текущей аналитики и требований
- Подключение Adjust SDK для iOS, Android или Flutter
- Настройка событий и conversion values
- Интеграция deeplink (Universal Links, App Links)
- Конфигурация ATT и SKAdNetwork
- Тестирование через Adjust Testing Console
- Документация и передача доступов
- Пост-релизный мониторинг и поддержка (1 месяц)
Типичные ошибки и как их избежать
- Окружение SDK не переключено на production — самый частый инцидент. Проверьте перед релизом.
- Пропущен
AdjustLifecycleCallbacksна Android — без него сессии не закрываются, атрибуция сбивается. - Нет
setOrderId— дублирование покупок в отчётах. - ATT запрос после инициализации Adjust без conversion values — данные по SKAdNetwork неполные.
- Отсутствие deeplink обработчиков — ссылки не атрибутируются, пользователь попадает в приложение без контекста.
Процесс интеграции под ключ
- Аудит текущей аналитики — оцениваем, какие данные нужны клиенту.
- Подключение SDK (iOS/Android/Flutter) — ручная или через менеджеры пакетов.
- Настройка events и conversion values — создаём токены, привязываем к коду.
- Конфигурация ATT и SKAdNetwork — для iOS 14+.
- Интеграция deeplink — Universal Links, App Links, URL Schemes.
- Тестирование через Adjust Testing Console — проверяем все сценарии.
- Деплой и мониторинг — после релиза следим за корректностью данных.
Сроки и стоимость
Базовая атрибуция с событиями занимает 1–2 дня. Если нужны deeplink и SKAdNetwork — до 3 дней. Более сложные сценарии, включающие интеграцию с партнёрами и настройку fraud prevention, могут потребовать до недели. Стоимость рассчитывается индивидуально — свяжитесь с нами для оценки.
Наша команда имеет 5+ лет опыта в интеграции мобильной аналитики. Мы выполнили более 30 проектов с Adjust и AppsFlyer. Гарантируем корректную атрибуцию после деплоя. Закажите интеграцию под ключ — и вы забудете о потерянных данных.







