Интеграция аналитики AppsFlyer в мобильное приложение
AppsFlyer — это прежде всего MMP (Mobile Measurement Partner), а не просто аналитика. Его ключевая задача — атрибуция: определить, из какой рекламной сети пришёл пользователь, установивший приложение. Без MMP нельзя корректно сравнить ROI Facebook Ads и Google UAC: обе платформы будут клеймить одного пользователя своим.
Как работает атрибуция AppsFlyer
При клике на рекламу AppsFlyer сохраняет fingerprint или click_id. После установки и первого запуска приложения SDK отправляет install-событие на сервер AppsFlyer. Сервер матчит install с кликом через детерминированный метод (click_id в deeplink) или вероятностный (IP + User-Agent). Результат: точная информация о кампании, адгруппе и объявлении, которые привели пользователя.
Подключение SDK
iOS через Swift Package Manager — AppsFlyerLib-iOS:
import AppsFlyerLib
// AppDelegate
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
}
// SceneDelegate или applicationDidBecomeActive
func applicationDidBecomeActive(_ application: UIApplication) {
AppsFlyerLib.shared().start()
}
Android:
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-атрибуция при холодном старте из deeplink будет неточной.
In-App события для оптимизации кампаний
AppsFlyer передаёт in-app события в рекламные сети для алгоритмической оптимизации (Conversions API, SKAdNetwork на iOS):
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 агрегированно. AppsFlyer автоматически управляет updateConversionValue через конфигурацию в дашборде — вручную это реализовывать не нужно.
// Для Conversion Value необходимо вызвать start() с ATT-статусом
AppsFlyerLib.shared().waitForATTUserAuthorization(timeoutInterval: 60)
// ... после запроса ATT:
AppsFlyerLib.shared().start()
Deeplink и OneLink
OneLink — технология AppsFlyer для универсальных ссылок, которые работают как на iOS (Universal Links), так и на Android (App Links) и при отсутствии приложения ведут на страницу установки:
// AppDelegate
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
AppsFlyerLib.shared().continue(userActivity, restorationHandler: nil)
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
AppsFlyerLib.shared().handleOpen(url, options: options)
return true
}
Типичные ошибки интеграции
isDebug = true попавший в production — это прямая утечка данных атрибуции (debug-трафик попадает в отдельный поток и не считается в реальных кампаниях). Обязательно проверяем через Build Configuration.
Отсутствие waitForATTUserAuthorization на iOS 14+: без паузы AppsFlyer отправит install до получения ATT-разрешения, и атрибуция будет вероятностной даже если пользователь потом согласился.
Что входит в работу
- Подключение SDK для iOS/Android
- Настройка DEV Key и App ID
- In-app события для ключевых конверсий
- SKAdNetwork configuration для iOS 14+
- OneLink / Universal Links / App Links setup
- Интеграция с рекламными сетями через постбэки (по требованию)
Сроки
Базовая атрибуция с in-app событиями: 1–2 дня. Полная интеграция с OneLink и SKAdNetwork: до 3 дней. Стоимость рассчитывается индивидуально.







