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

Ми часто стикаємося з запитами клієнтів на оперативну зміну параметрів застосунку без повного циклу релізу. Наприклад, потрібно змінити колір promo-кнопки або поріг безкоштовної доставки. Без Remote Config це вимагає хотфіксу, повторного рев'ю та очікування модерації в App Store або Google Play — ві

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

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

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

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

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

Часті запитання

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Ми часто стикаємося з запитами клієнтів на оперативну зміну параметрів застосунку без повного циклу релізу. Наприклад, потрібно змінити колір 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 під ваші завдання. Отримайте консультацію — і ви побачите, як просто керувати фічами без релізів. Зв'яжіться з нами, щоб обговорити ваш проєкт.