Налаштування атрибуції в мобільному продукті — завдання, яке багато хто відкладає, поки не зіштовхнуться з відсутністю даних щодо джерел установок. Наприклад, під час запуску рекламної кампанії ви можете виявити, що 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. Гарантуємо коректну атрибуцію після деплою. Замовте інтеграцію під ключ — і ви забудете про втрачені дані.







