Интеграция аналитики 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-расчётами по когортам.
Группы и account-level analytics
Для 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 дней. Стоимость рассчитывается индивидуально.







