Інтеграція аналітики Amplitude у мобільний додаток
Amplitude відрізняється від Firebase Analytics однією принциповою річчю: дані можна аналізувати без написання SQL. Воронки, retention-когорти, поведінкові шляхи користувачів — все через UI консолі. Для продуктових команд, які аналізують дані самі, це міняє швидкість прийняття рішень.
Підключення SDK
iOS через Swift Package Manager — пакет Amplitude-Swift:
import AmplitudeSwift
// AppDelegate або @main App
let amplitude = Amplitude(configuration: Configuration(
apiKey: "YOUR_API_KEY",
defaultTracking: DefaultTrackingOptions(
sessions: true,
appLifecycles: true,
screenViews: false // керуємо вручну
)
))
Singleton-інстанс краще інжектувати через DI-контейнер, ніж використовувати Amplitude.instance() — це спрощує тестування та заміну SDK в майбутньому.
Android через Gradle:
implementation("com.amplitude:analytics-android:1.+")
val amplitude = Amplitude(
Configuration(
apiKey = "YOUR_API_KEY",
context = applicationContext,
defaultTracking = DefaultTrackingOptions(
sessions = true,
appLifecycles = true,
)
)
)
События та властивості
Amplitude працює за моделлю Event → Event Properties + User Properties. Ключова відмінність від Firebase: властивості события та властивості користувача чітко розділені, і кожна подія автоматично збагачується поточними user properties на момент відправки.
// Подія з параметрами
amplitude.track(
eventType: "Purchase Completed",
eventProperties: [
"product_id": "sku_12345",
"price": 990.0,
"currency": "RUB",
"payment_method": "card"
]
)
// User properties
amplitude.setUserId("user_\(userId)")
let identifyEvent = Identify()
identifyEvent.set(property: "plan", value: "premium")
identifyEvent.add(property: "total_purchases", value: 1)
amplitude.identify(identifyEvent: identifyEvent)
Identify.add() — атомарний інкремент на сервері. Це важливо при паралельних сесіях: set() перезапише значення останньої сесії, add() коректно суммує.
Revenue tracking
Amplitude має вбудований об'єкт Revenue для відстеження монетизації — не потрібно вручну додавати события покупки:
let revenue = Revenue()
revenue.productId = "premium_monthly"
revenue.price = 9.99
revenue.quantity = 1
revenue.revenueType = "subscription"
amplitude.revenue(revenue: revenue)
Це автоматично попадає на Revenue панель управління з LTV-розрахунками за когортами.
Групи та аналітика на рівні акаунту
Для B2B-додатків Amplitude підтримує групову аналітику — события прив'язані до організації, а не тільки до користувача:
amplitude.setGroup(groupType: "company", groupName: "Acme Corp")
amplitude.groupIdentify(
groupType: "company",
groupName: "Acme Corp",
identifyObj: Identify().set(property: "plan", value: "enterprise")
)
Це Enterprise-функція Amplitude, але архітектурно правильно закласти підтримку групи з самого початку.
Типові проблеми при інтеграції
Amplitude буферизує события та відправляє їх пакетами (за замовчуванням кожні 30 секунд або 30 подій). При примусовому закритті додатка до відправки пакету останні события можуть бути втрачені. Для критичних подій (покупка, активація) явно викличте amplitude.flush().
Також: імена подій в Amplitude чутливі до регістру. Purchase Completed та purchase completed — два різні события в панелі управління. Потрібна суворої конвенція іменування, зафіксована в документації команди.
Що входить до роботи
- Підключення SDK (iOS, Android або Flutter)
- Налаштування інстанса з правильними опціями трекінгу
- Типізований шар трекера з конвенцією іменування
- User Properties та Identify для сегментації
- Revenue tracking для монетизації
- Перевірка подій через Amplitude DebugMode
Сроки
Інтеграція з подіями та user properties: 1–2 дні. З Revenue tracking та групами: до 3 днів. Вартість розраховується індивідуально.







