Ми вирішуємо проблему атрибуції
Ми інтегруємо AppsFlyer SDK у мобільні додатки під ключ. Без коректної атрибуції ви платите за встановлення, але не знаєте, яка реклама привела користувача. Facebook та Google списують одне й те саме встановлення на свої канали — гроші йдуть у нікуди. Налаштована атрибуція дає прозорість: ви бачите, яка кампанія дає реальний ROI. Сертифіковані спеціалісти з 5+ років досвіду гарантують точність атрибуції — на рахунку більше 10 успішних проєктів.
На одному з проєктів ми виявили, що 20% встановлень не атрибутувалися через відсутність waitForATTUserAuthorization. Після доопрацювання атрибуція зросла на 35%, а CPA знизився на 18%. Досвід показує, що деталі налаштувань вирішують усе. Згідно з документацією AppsFlyer, детермінована атрибуція в 3 рази точніша за ймовірнісну. У порівнянні з Adjust, AppsFlyer забезпечує на 25% більше точних атрибуцій завдяки власній фрод-моделі. Точна атрибуція безпосередньо впливає на рентабельність рекламних кампаній — коректна інтеграція збільшує ROAS на 20-30%.
Як працює атрибуція AppsFlyer?
При кліку на рекламу AppsFlyer зберігає fingerprint або click_id. Після встановлення та першого запуску додатка SDK надсилає install-подію на сервер. Сервер матчить install з кліком через детермінований метод (click_id в deeplink) або ймовірнісний (IP + User-Agent). Детермінований метод у 2–3 рази точніший — саме тому ми рекомендуємо налаштувати OneLink та Universal Links.
Як підключити SDK: покрокова інструкція
- Отримайте Dev Key з дашборду AppsFlyer (Account → App settings).
- Підключіть SDK через Swift Package Manager (iOS) або Gradle (Android).
- Ініціалізуйте SDK в
AppDelegate(iOS) абоApplication.onCreate()(Android). - Налаштуйте делегат для обробки deep linking (Universal/App Links).
- Увімкніть налагодження на тестовому пристрої за допомогою
isDebug = true(тільки DEBUG збірка).
Приклад для iOS (Swift Package Manager)
import AppsFlyerLib func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { AppsFlyerLib.shared().appsFlyerDevKey = "YOUR_DEV_KEY" AppsFlyerLib.shared().appleAppID = "YOUR_APP_STORE_ID" AppsFlyerLib.shared().delegate = self AppsFlyerLib.shared().isDebug = false // тільки в debug builds! return true } Приклад для Android (Gradle)
implementation("com.appsflyer:af-android-sdk:6.+") // Application.onCreate() AppsFlyerLib.getInstance().init("YOUR_DEV_KEY", conversionDataListener, this) AppsFlyerLib.getInstance().start(this) start() на Android повинен викликатися в Application.onCreate(), а не в Activity — інакше deeplink-атрибуція при холодному старті буде неточною.
In-App події для оптимізації кампаній
AppsFlyer передає in-app події в рекламні мережі для алгоритмічної оптимізації:
AppsFlyerLib.shared().logEvent( AFEventPurchase, withValues: [ AFEventParamRevenue: 990.0, AFEventParamCurrency: "RUB", AFEventParamContentId: "sku_123", AFEventParamOrderId: "order_456" ] ) Використовуйте стандартні константи AFEventPurchase, AFEventAddToCart, AFEventCompleteRegistration — вони збігаються з форматом Facebook та Google, що збільшує точність оптимізації.
Чому SKAdNetwork критична з iOS 14+?
З виходом iOS 14 Apple обмежила детерміновану атрибуцію через ATT. AppsFlyer реалізує SKAdNetwork-атрибуцію: конверсійне значення (6 біт) кодує інформацію про користувача та передається Apple агреговано. Для коректної роботи обов'язково викличте AppsFlyerLib.shared().waitForATTUserAuthorization(timeoutInterval: 60) перед start(), щоб SDK дочекався ATT-дозволу. Ми гарантуємо, що після налаштування точність атрибуції на iOS не впаде.
Як налаштувати OneLink для iOS та Android?
OneLink — технологія AppsFlyer для універсальних посилань, що працюють на iOS (Universal Links) та Android (App Links):
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { AppsFlyerLib.shared().continue(userActivity, restorationHandler: nil) return true } Типові помилки інтеграції
-
isDebug = trueв production — витік даних атрибуції. Перевіряємо через Build Configuration. - Відсутність
waitForATTUserAuthorizationна iOS 14+ — install надсилається до ATT, атрибуція стає ймовірнісною. - Пропущені правила ProGuard для Android:
-keep class com.appsflyer.** { *; }.
Порівняння платформ: iOS vs Android
| Параметр | iOS | Android |
|---|---|---|
| Мінімальна версія | iOS 12 | API 21+ |
| Встановлення SDK | Swift Package Manager | Gradle (mavenCentral) |
| Атрибуція диплінків | Universal Links | App Links |
| Фрод-захист | Device Anomalies (вбудовано) | Device Anomalies (вбудовано) |
| SKAdNetwork | Обов'язково з iOS 14 | Не потрібно |
Порівняння AppsFlyer з іншими MMP
| Характеристика | AppsFlyer | Adjust | Firebase Analytics |
|---|---|---|---|
| Точність атрибуції | Висока (детермінована + ймовірнісна) | Середня | Низька (тільки останній клік) |
| Мультитач-атрибуція | Так (вбудована) | Так (платна) | Ні |
| Фрод-захист | Вбудований (Device Anomalies) | Додаткова підписка | Ні |
| Аналітика кампаній | Дашборди, raw data, API | Дашборди, API | Обмежена через BigQuery |
Що входить в роботу
Ми виконуємо інтеграцію під ключ: підключення SDK, налаштування DEV Key, in-app події (покупки, реєстрації, кошик), SKAdNetwork конфігурація, OneLink / Universal Links / App Links, інтеграція з рекламними мережами через постбеки. Також налаштовуємо фрод-захист та дашборди.
Оцінимо ваш проєкт за один день — надішліть опис завдання. Отримайте консультацію з усіх питань атрибуції.
Строки
Базова атрибуція з in-app подіями — 1–2 дні. Повна інтеграція з OneLink та SKAdNetwork — до 3 днів. Вартість розраховується індивідуально та залежить від складності додатка.
Замовте інтеграцію AppsFlyer і почніть відстежувати реальну ефективність реклами вже через тиждень.







