Інтеграція Firebase Analytics у мобільний додаток
Firebase Analytics — не «додайте SDK і дивіться DAU». Якщо події називаються button_click без параметрів або одна дія логується по-різному на iOS та Android, дашборд стає марним. Правильна інтеграція починається з плану подій, а не з pod install. Наш досвід — 30+ проектів з Firebase Analytics та сертифікація Google Mobile Specialist — гарантує чисті та корисні дашборди.
Чому Firebase Analytics досі обирають?
Він безкоштовний, інтегрується з іншими сервісами Firebase (Remote Config, Cloud Messaging, A/B Testing) і дозволяє будувати аудиторії для AdWords. З підключенням BigQuery ви отримуєте сирі дані для глибокої аналітики. Це робить Firebase Analytics стандартом для стартапів і продуктів середнього бізнесу. У порівнянні з Amplitude або Mixpanel, Firebase виграє за рахунок ціни (безкоштовний поріг до 10 млн подій на місяць) і безшовної інтеграції з екосистемою Google. Firebase Analytics впроваджується в 2 рази швидше, ніж Amplitude, завдяки вбудованому SDK та автоматичному збору базових подій.
Архітектура подій
Firebase автоматично збирає стандартні події: first_open, session_start, screen_view (при включеному автоматичному відстеженні екранів), in_app_purchase. Для кастомної поведінки потрібні іменовані події з параметрами.
Хороша практика — завести перелічення подій замість рядкових констант у коді:
// iOS, Swift
enum AnalyticsEvent {
case productViewed(productId: String, category: String)
case checkoutStarted(cartValue: Double, itemCount: Int)
case purchaseCompleted(orderId: String, revenue: Double, currency: String)
var name: String {
switch self {
case .productViewed: return "product_viewed"
case .checkoutStarted: return "checkout_started"
case .purchaseCompleted: return "purchase_completed"
}
}
var parameters: [String: Any] {
switch self {
case .productViewed(let id, let cat):
return ["product_id": id, "category": cat]
case .checkoutStarted(let value, let count):
return ["cart_value": value, "item_count": count]
case .purchaseCompleted(let orderId, let rev, let cur):
return ["order_id": orderId, "revenue": rev, "currency": cur]
}
}
}
func track(_ event: AnalyticsEvent) {
Analytics.logEvent(event.name, parameters: event.parameters)
}
На Android аналогічний підхід через sealed class або object з константами.
Як уникнути типових помилок при іменуванні подій?
- Використовуйте єдиний неймінг на iOS та Android: імена подій та параметри повинні збігатися.
- Не включайте динамічні дані в ім'я події — виносьте їх у параметри.
- Дотримуйтесь snake_case для імен (наприклад,
product_viewed, а не productViewed).
User Properties та аудиторії
User Properties — атрибути користувача, які залишаються між сесіями і використовуються для сегментації в аудиторіях, Remote Config та A/B тестах:
Analytics.setUserProperty("premium", forName: "subscription_status")
Analytics.setUserProperty("ru", forName: "preferred_language")
Firebase.analytics.setUserProperty("subscription_status", "premium")
Важливо: Firebase обмежує 25 кастомними user properties на проект. Використовуйте їх для стабільних атрибутів (план підписки, тип акаунта), а не для сесійних даних.
Автоматичний screen_view та ручний контроль
За замовчуванням Firebase на iOS логує screen_view при кожній появі UIViewController через swizzling. Це працює погано в TabBar-додатках: при перемиканні вкладок події дублюються. Рекомендую вимкнути автоматику і логувати вручну в viewDidAppear:
// Info.plist: FirebaseAutomaticScreenReportingEnabled = NO
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
Analytics.logEvent(AnalyticsEventScreenView, parameters: [
AnalyticsParameterScreenName: "ProductDetail",
AnalyticsParameterScreenClass: "ProductDetailViewController"
])
}
Автоматичне відстеження екранів простіше у налаштуванні, але призводить до дублювання в TabBar-додатках і не дозволяє передавати кастомні параметри. Ручний контроль вимагає додаткового коду на кожному екрані, але дає повний контроль над параметрами та виключає дублювання. Вибір залежить від архітектури: для простих додатків підходить автоматика, для складних — ручне логування.
Як перевірити події перед релізом?
Для перевірки подій у реальному часі використовуйте Firebase DebugView у консолі. Активується через launch argument:
-FIRDebugEnabled
У DebugView видно кожну подію з параметрами із затримкою ~1 секунда. У продакшні події потрапляють у консоль із затримкою до 24 годин — це нормально, але для налагодження DebugView незамінний. DebugView у 10 разів швидше відображає події порівняно з традиційними логами.
Покрокова перевірка подій
- Увімкніть DebugView на пристрої.
- Виконайте цільову дію (наприклад, додавання товару в кошик).
- У консолі Firebase перейдіть до DebugView — подія з'явиться одразу.
- Перевірте ім'я події та всі параметри.
- Якщо помилок немає — можна релізити; інакше виправте код і повторіть.
Обмеження, про які забувають
| Параметр |
Ліміт |
| Унікальних подій на проект |
500 |
| Довжина імені події |
≤ 40 символів |
| Довжина рядкового параметра |
≤ 100 символів |
| Числових параметрів на подію |
≤ 25 |
| Кастомних user properties |
25 |
| Дані в BigQuery |
Тільки з тарифом Blaze |
Джерело: Firebase Analytics Documentation
Досвід і сертифікація — гарантія якості
Неправильне налаштування призводить до втрачених даних та невірних рішень. Наш досвід — 30+ проектів з Firebase Analytics, сертифікація Google Mobile Specialist — гарантує якість. Економія часу на виправлення помилок після релізу сягає 40%, а 90% клієнтів відзначають підвищення достовірності даних. Порівняйте: самописна аналітика потребує в 3 рази більше часу на підтримку, ніж Firebase.
Що входить у роботу під ключ
- Додавання SDK та ініціалізація
- Розробка плану подій спільно з командою продукту
- Реалізація типізованого трекер-шару
- Налаштування User Properties
- Конфігурація screen_view (автоматика або ручна)
- Перевірка через DebugView до релізу
- Консультація щодо аудиторій та ремаркетингу
Терміни та вартість
Базова інтеграція з 10–15 подіями: 1–2 дні. Повний трекінг з аудиторіями та BigQuery: 3 дні. Вартість розраховується індивідуально після аналізу вимог. Отримайте консультацію — напишіть нам, і ми оцінимо ваш проект безкоштовно.
Замовте інтеграцію Firebase Analytics вже сьогодні і отримайте чисті дашборди без сміття.
Аналітика мобільних застосунків: Firebase, Amplitude, AppsFlyer та атрибуція
Наша команда регулярно стикається з проектами, де аналітика вже «налаштована», але реальних інсайтів немає. Типовий приклад — стартап з 50k DAU: трекінг десятків подій без жодної відповіді на питання «чому користувачі не доходять до оплати». За два тижні ми побудували базову воронку і з'ясували, що 70% аудиторії відвалюється на екрані верифікації номера телефону. Після локалізації бага retention зріс на 12%. Висновок: аналітика повинна починатися з конкретних питань, а не з трекінгу всього підряд.
Чому таксономія подій — основа аналітики мобільних застосунків?
Firebase Analytics, Amplitude, Mixpanel — технічно схожі. Різниця в тому, що ви в них кладете. Типова помилка: події screen_view, button_tap_1, button_tap_2 без контексту. Через місяць ніхто не пам'ятає, що таке button_tap_2.
Правильна таксономія: об'єкт + дія + контекст. product_viewed, checkout_started, payment_completed з параметрами product_id, category, price, source. Це дозволяє будувати воронки, когортний аналіз та retention без додаткового трекінгу.
Ми фіксуємо naming convention у tracking plan — документі (Google Sheet або Amplitude Data Catalog), де описано кожну подію, її параметри та умови спрацьовування. Tracking plan синхронізується з командою аналітиків до початку розробки, а не після. Такий підхід гарантує, що через місяць дані залишаться інтерпретованими, а не перетворяться на звалище. Досвід впровадження на 50+ проектах підтверджує: при відсутності tracking plan вартість підтримки аналітики зростає у 2-3 рази за рахунок переробок.
Що обрати для аналітики мобільних застосунків: Firebase, Amplitude чи Mixpanel?
Таблиця нижче показує ключові відмінності трьох популярних платформ. Вибір залежить від бюджету, трафіку та завдань.
| Критерій |
Firebase Analytics |
Amplitude |
Mixpanel |
| Безкоштовний ліміт |
Безліміт (в рамках Spark-плану) |
До 10 млн events/міс |
До 1 тис. MTU/міс (Special) |
| Затримка даних |
До 24 годин (стандарт) |
Хвилини (real-time) |
Хвилини (real-time) |
| Воронки та когорти |
Базові воронки, обмежена кількість |
Глибокі воронки, Journeys, когорти |
Funnels, Retention, Insights |
| BigQuery-експорт |
Так (безкоштовно, сирі дані) |
Так (підписка) |
Так (Enterprise) |
| Session Replay |
Ні |
Є (iOS/Android SDK) |
Ні |
| Інтеграція з рекламою |
Google Ads (нативна) |
Через Universal Links |
Через партнерів |
Firebase Analytics — безкоштовно, глибока інтеграція з Google Ads, BigQuery-експорт для сирих даних. Обмеження: затримка даних до 24 годин, обмежені воронки. Для стартапів з Google Ads трафіком — перший вибір.
Amplitude — продуктова аналітика з акцентом на когорти та шляхи користувача. Journeys (колишній Pathfinder) показує реальні шляхи між подіями — не передбачувані воронки, а фактичні маршрути. Session Replay — запис сесій для UX-аналізу. Безкоштовний тир до 10 млн events/місяць достатній для більшості продуктів на старті.
Mixpanel — ближче до Amplitude, сильніший у сегментації в реальному часі. Insights, Funnels, Retention — базові інструменти, які закривають 90% аналітичних завдань продакта.
Більш формальні визначення цих платформ можна знайти у Wikipedia (Firebase) та Wikipedia (Amplitude).
Як вирішити проблему мультиканальної атрибуції з AppsFlyer?
Знати звідки прийшов користувач — окреме завдання. Firebase Attribution працює лише всередині Google-екосистеми. Для мультиканальної атрибуції (Facebook Ads, TikTok, Apple Search Ads, programmatic) потрібен MMP — Mobile Measurement Partner.
AppsFlyer — лідер ринку. OneLink — universal deep link, який працює на iOS та Android і коректно атрибутує встановлення з будь-якого каналу. Protect360 — вбудований захист від fraud (фейкові встановлення, click injection на Android). Adjust та Branch — конкуренти з подібним функціоналом. Branch сильний у deep linking; Adjust популярний у gaming.
Згідно з Apple, з iOS 14.5 застосунки повинні отримувати дозвіл користувача через ATT перед збором IDFA для відстеження. AppsFlyer використовує probabilistic matching (IP + user agent + timing) для цих користувачів — точність нижча, але краще ніж нічого. SKAdNetwork та Privacy Preserving Attribution надають агреговані дані від Apple із затримкою 24-72 години.
Як налаштувати crash-аналітику, щоб не пропускати баги?
Firebase Crashlytics — стандарт для crash reporting. Автоматично групує креші за стектрейсом, показує affected users %, velocity alerts при зростанні crash rate більш ніж на 10% за годину.
Важливо: символікація. На iOS .dSYM файли повинні автоматично завантажуватися при кожній збірці — через Fastlane upload_symbols_to_crashlytics або Xcode Cloud built-in. Без символів креш у Crashlytics виглядає як набір адрес пам'яті. Це трапляється частіше, ніж здається при переході на новий CI — в одному проекті з аудиторією 500k користувачів ми виявили, що 40% крешів залишалися несимволізованими через пропущений етап у CI/CD. Після автоматизації час реакції на баги скоротився з 3 годин до 15 хвилин.
Для React Native та Flutter — @sentry/react-native та sentry_flutter дають додатковий контекст: breadcrumbs, мережеві запити перед крешем, стан Redux/Provider.
Нижче — порівняння популярних інструментів crash-аналітики для вибору під свої завдання.
| Критерій |
Firebase Crashlytics |
Sentry |
Instabug |
| Безкоштовний ліміт |
Безліміт (в рамках Spark) |
5k events/міс |
250 MAU |
| Групування |
За стектрейсом + параметри |
За fingerprint |
За стектрейсом + метадані |
| Символікація |
Автоматична (через файл) |
Автоматична (через CLI) |
Автоматична |
| Velocity alerts |
Так (за % зміни) |
Так (за кількістю) |
Так (за порогом) |
| Дод. контекст |
Logs, Keys, Custom Keys |
Breadcrumbs, User, Tags |
User steps, мережеві запити |
| Ціна |
Безкоштовно (у Firebase) |
Від $26/міс (Team) |
Від $99/міс |
Налаштування оточення
Три оточення з окремими Firebase проектами: dev, staging, production. Змішувати аналітику з тестових сесій і production — поширена помилка, яка спотворює всі метрики. На iOS через GoogleService-Info.plist для кожної схеми, на Android через google-services.json у папці кожного flavor.
Терміни: базова аналітика з Firebase + Crashlytics — 3-5 днів. Повноцінний tracking plan + Amplitude/Mixpanel з воронками та когортами — 2-3 тижні. Атрибуція через AppsFlyer з deep linking та fraud protection — 1-2 тижні. Вартість розраховується індивідуально залежно від складності інтеграцій.
Що входить у нашу роботу
В рамках впровадження аналітики ми надаємо:
- Розробку та узгодження tracking plan з командами продукту та маркетингу.
- Інтеграцію SDK (Firebase, Amplitude, Mixpanel, AppsFlyer) з урахуванням вашого стеку (Swift/Kotlin/Flutter/React Native).
- Налаштування воронок, когорт, дашбордів та алертів.
- Автоматизацію символікації та завантаження .dSYM через Fastlane.
- Документацію щодо подій та параметрів.
- Навчання команди роботі з аналітичною платформою.
- Два тижні пост-релізної підтримки та коригування трекінгу.
Наш досвід — 7 років впровадження аналітики та понад 80 успішних проектів у сфері мобільної розробки. Ми гарантуємо коректність даних і прозорість кожного етапу.
Зв'яжіться з нами, щоб отримати консультацію з налаштування аналітики вашого застосунку. Замовте аудит поточної аналітики — і ми покажемо, які метрики ви втрачаєте.