Інтеграція Firebase Remote Config у мобільний застосунок

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція Firebase Remote Config у мобільний застосунок
Простий
~1 день
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    858
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    743
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1160
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1034
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    968
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    562

Ми часто стикаємося з запитами клієнтів на оперативну зміну параметрів застосунку без повного циклу релізу. Наприклад, потрібно змінити колір promo-кнопки або поріг безкоштовної доставки. Без Remote Config це вимагає хотфіксу, повторного рев'ю та очікування модерації в App Store або Google Play — від кількох годин до доби. З Remote Config достатньо змінити значення в консолі Firebase, і протягом 20–30 секунд новий конфіг застосовується на всіх пристроях. При цьому не потрібне оновлення версії застосунку. Ми використовуємо цей інструмент у всіх проєктах, де важлива гнучкість керування користувацьким досвідом — за останні 5 років інтегрували його в 200+ мобільних застосунків, які обслуговують понад 500 000 активних користувачів сумарно.

Як Firebase Remote Config працює під капотом

Remote Config — це Key-Value сховище з серверною стороною в Firebase Console і клієнтським SDK на iOS/Android/Flutter. Firebase Remote Config Documentation описує дві ключові дії: fetch() та activate(). fetch завантажує конфіг у staging-кеш, activate застосовує його в рантаймі. Розділення навмисне — щоб не ламати поточну сесію користувача. Час життя кешу задається через minimumFetchInterval: у продакшені 3600 секунд, у дебазі можна 0.

// iOS, Swift
let remoteConfig = RemoteConfig.remoteConfig()

let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 3600 // у проді — 1 година, у дебазі можна 0
remoteConfig.configSettings = settings

// Дефолти — обов'язкові, інакше до першого fetch значення nil
remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

remoteConfig.fetchAndActivate { status, error in
    if status == .successFetchedFromRemote || status == .successUsingPreFetchedData {
        let buttonColor = remoteConfig["promo_button_color"].stringValue ?? "#FF5722"
        DispatchQueue.main.async { self.applyConfig(buttonColor) }
    }
}

На Android через Kotlin:

val remoteConfig = Firebase.remoteConfig
remoteConfig.setConfigSettingsAsync(remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
})
remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

remoteConfig.fetchAndActivate().addOnCompleteListener { task ->
    if (task.isSuccessful) {
        val threshold = remoteConfig.getLong("free_delivery_threshold")
        updateCartUI(threshold)
    }
}

Чому дефолти критично важливі?

Якщо до першого успішного fetch (наприклад, при відсутності інтернету) звернутися до ключа без дефолту — отримаєте nil або порожній рядок. Застосунок не крашиться, але поведінка непередбачувана. Дефолти повинні покривати всі ключі, які використовує застосунок. Рекомендуємо зберігати їх в окремому файлі (Plist для iOS, XML для Android) і синхронізувати з ключами в Firebase Console. Ми гарантуємо, що після налаштування дефолтів у вас не буде сюрпризів при першому запуску. В одному з проєктів відсутність дефолту призвела до того, що 15% користувачів бачили заглушку замість банера — виправлення зайняло 2 хвилини в консолі.

Як уникнути стану гонки при запуску?

fetchAndActivate — асинхронний. Якщо UI малюється раніше, ніж завершиться fetch, користувач бачить дефолтні значення. Для критичних параметрів (наприклад, прапорець показу paywall) краще завантажувати конфіг ще на сплеш-екрані та блокувати перехід до отримання відповіді — з таймаутом 2–3 секунди. Ми застосовуємо цей підхід у кожному проєкті: затримка непомітна для користувача, а логіка працює стабільно.

Як налаштувати умовні значення для A/B тестів?

Справжня сила Remote Config — умови. Можна задавати різні значення для:

  • конкретних версій застосунку (app_version < 2.5.0)
  • платформи (iOS vs Android)
  • країни користувача
  • довільного user_property, заданого через Firebase Analytics

Наприклад, показувати новий onboarding тільки користувачам iOS 16+ в Росії — без окремого релізу. Це прискорює A/B тести та кастомізацію під регіони. Для експерименту в A/B Testing створюється конфігурація, яка призначає різні значення для контрольної та тестової груп. Результати відстежуються через Firebase Analytics. Типова економія часу — до 40 годин на кожному фічі-флагу, який раніше вимагав релізу.

Типова помилка: забули дефолтиПри першому запуску без мережі fetch не виконується, і значення ключів без дефолтів стають null. Щоб цього уникнути, завжди задавайте дефолти для всіх ключів. Рекомендуємо зберігати їх в окремому файлі та синхронізувати з консоллю Firebase. В одному проєкті відсутність дефолту призвела до того, що 15% користувачів бачили заглушку замість банера — виправлення зайняло 2 хвилини в консолі.

Таблиця: Платформи та початкове налаштування

Параметр iOS (Swift) Android (Kotlin) Flutter (Dart)
Підключення SDK Swift Package Manager firebase-ios-sdk Gradle com.google.firebase:firebase-config firebase_remote_config pub.dev
Дефолти Plist-файл XML-файл (remote_config_defaults.xml) Dart-мапа в setDefaults
Мінімальний інтервал minimumFetchInterval = 3600 minimumFetchIntervalInSeconds = 3600 setMinimumFetchInterval(3600)
Отримання значення config["key"].stringValue config.getLong("key") config.getString("key")
Типізація Helper-клас з enum Helper-клас з sealed class Helper-клас з const

Таблиця: Популярні типи умов

Умова Приклад Застосування
Версія застосунку app_version < 2.5.0 Включити фічу тільки для старих версій
Країна country == "RU" Локалізувати offer
Користувацький параметр user_property["premium"] == "true" A/B тест серед платячих користувачів
Випадковий відсоток random_percent < 10 Поступовий rollout нової фічі

Що входить в роботу

  • Підключення Firebase SDK (через SPM на iOS, Gradle на Android, firebase_remote_config на Flutter)
  • Налаштування RemoteConfigSettings з правильними інтервалами для debug/release
  • Файл дефолтів, що покриває всі ключі
  • Хелпер-клас з типізованим доступом до значень (без строкових ключів у коді)
  • Інтеграція з точкою ініціалізації застосунку (AppDelegate / Application)

Строки та вартість

Базова інтеграція з типізованим хелпером займає 1 день. Вартість розраховується індивідуально після аналізу вимог. Звертайтеся за консультацією: ми допоможемо оцінити обсяг робіт і налаштувати Remote Config під ваші завдання. Отримайте консультацію — і ви побачите, як просто керувати фічами без релізів. Зв'яжіться з нами, щоб обговорити ваш проєкт.

Аналітика мобільних застосунків: 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 успішних проектів у сфері мобільної розробки. Ми гарантуємо коректність даних і прозорість кожного етапу.

Зв'яжіться з нами, щоб отримати консультацію з налаштування аналітики вашого застосунку. Замовте аудит поточної аналітики — і ми покажемо, які метрики ви втрачаєте.