Интеграция аналитики Mixpanel в мобильное приложение
Mixpanel строит аналитику вокруг пользователей, а не сессий. Каждое событие привязывается к distinct_id — уникальному идентификатору человека. Когда анонимный пользователь регистрируется, все его предыдущие события объединяются с новым профилем через alias. Для воронок конверсии и retention это принципиально: история пользователя не обрывается в момент авторизации.
Подключение и инициализация
iOS через Swift Package Manager — репозиторий mixpanel/mixpanel-swift:
import Mixpanel
// AppDelegate
Mixpanel.initialize(token: "YOUR_PROJECT_TOKEN", trackAutomaticEvents: true)
trackAutomaticEvents: true включает автоматический трекинг: App Session, App Updated, App Crashed. Для iOS 14+ при первом запуске Mixpanel не использует IDFA без явного запроса — это соответствует ATT.
Android:
MixpanelAPI.getInstance(context, "YOUR_PROJECT_TOKEN", true)
Идентификация пользователей — самая важная часть
Типичная ошибка: вызов identify сразу при регистрации без alias для анонимной истории.
Правильный сценарий:
let mixpanel = Mixpanel.mainInstance()
// До авторизации — анонимный distinct_id генерируется автоматически
// mixpanel.distinctId содержит UUID
// После успешной регистрации:
mixpanel.alias(newId: "user_\(userId)", distinctId: mixpanel.distinctId)
mixpanel.identify(distinctId: "user_\(userId)")
// После входа в существующий аккаунт (без alias!):
mixpanel.identify(distinctId: "user_\(userId)")
alias создаёт постоянную связь между анонимным и авторизованным ID — это однократная операция. Повторный вызов alias для уже связанного ID вызовет дублирование в дашборде.
События и Super Properties
Super Properties — свойства, которые автоматически добавляются к каждому последующему событию:
mixpanel.registerSuperProperties([
"app_version": Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "",
"platform": "ios",
"subscription_status": "free"
])
// Обновить при смене подписки:
mixpanel.registerSuperPropertiesOnce(["subscription_status": "premium"])
Кастомное событие:
mixpanel.track(event: "Product Viewed", properties: [
"product_id": "sku_789",
"category": "electronics",
"price": 29990
])
People Analytics — профили пользователей
Mixpanel People позволяет строить сегменты и отправлять push прямо из консоли:
let people = Mixpanel.mainInstance().people
people.set(["$name": "Иван Петров", "$email": "[email protected]"])
people.set(["plan": "premium", "total_orders": 5])
people.increment("total_orders", by: 1) // атомарный инкремент
Профили синхронизируются с событиями по distinct_id — в дашборде можно кликнуть на профиль и увидеть полную историю действий.
Типичные проблемы
Mixpanel буферизует события в NSUserDefaults на iOS. При крэше до отправки батча данные сохраняются и уходят при следующем запуске. Это хорошо. Плохо другое: если distinct_id не задан явно (например, при логауте вызвали reset()), следующие события пойдут под новым анонимным ID — и воронка разрывается. reset() использовать только при смене аккаунта, не при каждом logout.
Что входит в работу
- Подключение SDK для iOS/Android
- Настройка идентификации: анонимный flow → alias → identify
- Super Properties для сквозного контекста
- Трекинг ключевых событий по плану
- People Analytics с профилями
- Проверка событий через Mixpanel Live View
Сроки
Интеграция с корректной идентификацией и событиями: 1–2 дня. Стоимость рассчитывается индивидуально.







