Firebase Remote Config: какво е, параметри и как да управлявате от разстояние

Автор: IT Sectr Публикувано: 2026-04-28 Време за четене: 15 мин

Firebase Remote Config е облачна услуга за управление на параметри на мобилно приложение, която ви позволява да променяте поведението, външния вид и съдържанието му без да публикувате нова версия в магазина за приложения. За разлика от традиционния подход с цикли на издаване, Remote Config дава възможност за промяна на всякакви конфигурируеми параметри в реално време чрез конзолата Firebase или REST API. Според данни на Google Firebase (2026), услугата се използва в 65% от приложенията на платформата Firebase за A/B тестване, персонализиране и оперативно управление на функции от страна на клиента.

Основни точки

  • Remote Config — услуга за отдалечено управление на параметри на приложение чрез облачната конзола Firebase.
  • Промените влизат в сила без актуализиране на приложението в магазина — достатъчно е рестартиране или интервална синхронизация.
  • Персонализирането позволява задаване на различни стойности на параметри за различни групи потребители или условия.
  • A/B тестването е вградено в Remote Config: можете да сравнявате поведението на групи с различни стойности на параметри.
  • Кеширането от страна на клиента намалява натоварването на сървъра: данните се съхраняват локално до 12 часа по подразбиране.

Какво е Firebase Remote Config и как работи

Firebase Remote Config е услуга, която съхранява двойки ключ-стойност от страна на сървъра Firebase и ги доставя на клиентски устройства при поискване или по график. Всеки параметър има име (низ), стойност (низ, число, boolean или JSON) и може да бъде свързан с условия — правила, които определят каква стойност получава конкретен потребител. Условията могат да проверяват версията на приложението, езика на устройството, региона, случаен процент и много други атрибути.

Архитектурата на Remote Config е изградена върху push-pull модел с приоритет на pull. Клиентът периодично изисква актуални стойности от сървъра (по подразбиране на всеки 12 часа). Въпреки това, разработчикът може да инициира незабавна синхронизация в кода или чрез конзолата Firebase (бутон „Publish changes”). След публикуване на промените, сървърът изпраща push известие чрез Firebase Cloud Messaging и приложението след получаването му може да поиска отново параметрите.

Безплатният тариф на Firebase Remote Config няма ограничения за броя на параметрите или заявките, което го отличава от другите Firebase услуги. Единственото ограничение е размерът на отговора, който не трябва да надвишава 800 KB (общо за всички параметри). Това е напълно достатъчно за типичен сценарий: повечето проекти използват 10–50 параметъра и общият им обем рядко надвишава 100 KB.

Как Remote Config определя каква стойност да върне на потребителя

Механизмът за избор на стойност се основава на приоритета на условията. Всяко условие представлява правило (напр. „iOS версия > 15.0”). Remote Config проверява условията по ред на приоритет и връща стойността на първото подходящо условие. Ако никое условие не подхожда, се използва стойността по подразбиране (default value). Този механизъм позволява създаването на йерархия от правила: от най-специфичното към най-общото.

Важно: редът на условията в конзолата Firebase има значение. Ако две условия могат да подхождат едновременно на един потребител, печели това, което е по-високо в списъка. Препоръчва се поставянето на по-специфични условия (напр. за конкретна версия на приложението) над общите условия (напр. „Всички iOS потребители”). Неправилният ред може да доведе до това, че целенасочена промяна никога да не се приложи.

Кеширане и време на живот на параметрите

По подразбиране Remote Config кешира получените от сървъра стойности за 12 часа. Това означава, че след публикуване на промени в конзолата, приложението ще ги види не по-рано от 12 часа (или след следващото изрично извикване на fetch). Минималното време за кеширане може да се зададе чрез FirebaseRemoteConfigSettings(minimumFetchIntervalInSeconds: 3600) — за продукция се препоръчва поне 1 час, за да се избегнат прекомерни заявки към сървъра и изразходване на потребителски трафик.

За тестване на промени по време на разработка използвайте минималния интервал от 0 секунди: FirebaseRemoteConfigSettings(minimumFetchIntervalInSeconds: 0). В този режим всяко извикване на fetch ще зарежда актуални стойности от сървъра. Важно е да не забравите да върнете продукционния интервал преди издаването, в противен случай при всяко стартиране приложението ще се свързва със сървъра, увеличавайки разходите и консумацията на батерия.

Параметри, условия и групи потребители

Параметър Remote Config е именувана променлива, която може да приеме една от няколко стойности в зависимост от условията. Типове стойности: string, number (double), boolean, JSON object (сериализиран низ). JSON параметрите са удобни за предаване на структурирани данни без създаване на множество отделни параметри: например обект с настройки на темата на приложението (primaryColor, backgroundColor, fontSize).

Условия (conditions) са логически правила, които проверяват атрибути на потребителя или устройството: версия на ОС (iOS, Android), версия на приложението, държава, език, потребителска аудитория (свойство, дефинирано в кода), случаен процент (за A/B тестове). Условията могат да се комбинират чрез логическо И: например „версия на приложението >= 5.0” И „държава = Русия”. Всеки параметър може да има неограничен брой условия, но на практика се използват 2–5.

За персонализиране използвайте потребителски свойства (user properties) — атрибути, задавани в кода на приложението чрез Firebase Analytics. Например analytics.setUserProperty(„subscription_tier”, „premium”). Remote Config може да проверява това свойство и да връща стойности, специфични за премиум потребителите. Персонализирането чрез Remote Config не изисква създаване на условия от страна на клиента — цялата логика е съсредоточена в облачната конзола.

Тип условиеПримерСценарий
Версия на ОСiOS >= 16.0Включване на нова функция само за нови версии на iOS
Версия на приложениетоapp_version >= 3.2Показване на банер за актуализация за стари версии
Държаваcountry == „JP”Локализиране на съдържание за Япония
Случаен процент10% потребителиA/B тест за 10% от аудиторията
User Propertytier == „premium”Включване на премиум функции

Групи потребители и сегментиране

Remote Config поддържа два модела на сегментиране: на база атрибути (conditions) и на база свойства на Firebase Analytics (user properties). Първият модел е статичен: условието проверява фиксиран атрибут, който не се променя в рамките на сесията или версията на приложението. Вторият модел е динамичен: свойството може да бъде зададено във всеки момент от работата на приложението, което позволява гъвкаво сегментиране на потребителите по време на изпълнение.

Важно: за използване на user properties в Remote Config е необходима интеграция на Firebase Analytics. Това изискване се дължи на факта, че Remote Config получава потребителски данни от Analytics SDK. Без Analytics Remote Config работи само с атрибути на устройството (версия на ОС, версия на приложението, държава от IP). Персонализирането на база поведение на потребителя (напр. „направи 5 покупки”) е достъпно само чрез Analytics.

Версиониране на шаблон

Шаблонът Remote Config (template) е пълен набор от всички параметри, условия и техните стойности. Firebase съхранява историята на промените на шаблона и позволява връщане към всяка предишна версия в рамките на 90 дни. Версионирането е критично важно: ако след публикуване на промени бъде открита грешка (напр. неправилна стойност на параметър разваля UI), шаблонът може незабавно да бъде върнат към предишна работеща версия чрез конзолата Firebase.

Всяка промяна на шаблона (публикуване) създава нова версия с уникален номер. В конзолата Firebase е достъпен дневник на промените с посочване на време, потребител и описание (ако е попълнено). Препоръчва се винаги да добавяте описание към публикуването: „Включихме новия канал за iOS 10% тестова група”. Без описание след месец е невъзможно да си спомните какво точно е променено във версия 42.

Как да внедрите Remote Config в приложението

Внедряването на Remote Config се състои от три стъпки: инициализация на SDK с настройки (време за кеширане), дефиниране на параметри по подразбиране (стойности в случай на недостъпност на сървъра) и логика за прилагане на получените стойности. Параметрите по подразбиране са предпазна мрежа в случай, че устройството не може да се свърже с Firebase (няма интернет, сървърът е недостъпен). Без default values приложението ще използва null, което може да доведе до срив.

Дефинирането на default values се извършва по два начина: програмно чрез извикване на setDefaultsAsync или чрез XML файл. Програмният начин е удобен за малки проекти: всички стойности се задават директно в кода веднъж при стартиране на приложението. Файловият начин е за предпочитане за проекти с десетки параметри: стойностите се съхраняват в ресурси и могат лесно да се редактират без прекомпилиране. Препоръчва се комбиниране: основните настройки в XML, а специфичните — програмно.

Асинхронността е ключова характеристика на Remote Config SDK. Методът fetchAndActivate() изпълнява заявка към сървъра във фонов поток, без да блокира UI. След завършване на зареждането става активиране — стойностите на параметрите се актуализират в паметта на приложението. За проследяване на завършването използвайте слушатели или корутини (в Android/Kotlin). Потребителят не трябва да вижда „скокове” на UI при актуализиране на параметрите — всички промени трябва да се прилагат плавно.

Инициализация с onComplete и слушатели

При първото стартиране Remote Config SDK не блокира инициализацията на приложението. По време на синхронизацията приложението използва стойности по подразбиране. Това означава, че потребителят може да види стара версия на интерфейса при първото стартиране, а след завършване на fetch — нова. За критични параметри (напр. serverUrl, от който зависи функционалността), използвайте синхронна активация с изчакване на резултата.

Препоръчителна практика: покажете екран за зареждане с минимално закъснение, ако на приложението му е критично да получи актуални параметри преди показване на първия екран. На екрана за зареждане се стартира fetchAndActivate с таймаут от 5 секунди. Ако в рамките на 5 секунди параметрите не се заредят, приложението стартира с default values. Това предотвратява безкрайното изчакване при липса на интернет.

Работа с JSON параметри

JSON параметрите на Remote Config позволяват предаване на структурирани данни с една стойност. Например обект със стилове на тема: {„primaryColor”: „#6200EE”, „borderRadius”: 8, „fontFamily”: „Roboto”}. От страна на клиента JSON се анализира и прилага към UI. Предимства: един параметър вместо три, атомарност на актуализацията (и трите полета се актуализират едновременно), чиста конзола. Недостатък: трудност при четене в конзолата Firebase (JSON се показва като низ).

Препоръка: използвайте JSON параметри за групи от логически свързани стойности, които се актуализират заедно (теми, конфигурация на екран, мрежови настройки). За независими параметри (feature toggle, serverUrl) използвайте отделни низови или булеви параметри — по-лесни са за четене в конзолата и за проследяване на промените в историята на версиите на шаблона.

A/B тестване с Remote Config

A/B тестването е вградена възможност на Firebase Remote Config, която позволява разделяне на потребителите на групи, задаване за всяка група на различни стойности на параметри и измерване на влиянието на промените върху избрани метрики. За разлика от ръчното разделяне чрез условия с random_percent, интеграцията с Firebase Analytics автоматично събира статистика за всяка експериментална група и показва статистическата значимост на разликите.

Процес на A/B тест: разработчикът създава експеримент в конзолата Firebase (секция A/B Testing), избира параметър Remote Config, задава стойности за контролната и тестовата група и определя целева метрика (напр. conversion rate или revenue). Firebase автоматично разпределя потребителите в групи, събира данни и след 2–4 седмици показва резултата с p-value. Експериментът може да бъде спрян предсрочно, ако резултатът е ясен.

Статистическата значимост е ключовият критерий за спиране на експеримента. Firebase A/B Testing използва честотен подход (Frequentist) и показва p-value за всяка метрика. Стандартният праг на значимост е 0.05 (95% вероятност за достоверност). При достигане на този праг в полза на една от групите Firebase препоръчва спиране на експеримента и прилагане на промените за всички потребители. Ако след 4 седмици значимост не бъде постигната, експериментът се счита за неубедителен.

Видове експерименти

Firebase A/B Testing поддържа два вида експерименти: класически A/B (сравнение на две стойности на един параметър) и многовариантен A/B/n (сравнение на три или повече стойности). За многовариантни тестове са необходими повече потребители за постигане на статистическа значимост. Препоръчва се използване на A/B/n само за параметри с 3–5 варианта, където всеки вариант се различава коренно от останалите.

Продължителността на експеримента зависи от обема на трафика: за приложения с 1000 активни потребители на ден минималната продължителност е 2 седмици, за приложения със 100 000 потребители — 3–5 дни. Firebase автоматично изчислява необходимото време и предупреждава, ако текущият трафик не е достатъчен за откриване на значими разлики. Важно: не спирайте експеримента преди изчисления срок, дори ако резултатът изглежда очевиден — това е класическата грешка „peeking”.

Метрики за A/B тестване

Целевите метрики в Firebase A/B Testing се дефинират на база събития на Firebase Analytics. Налични са стандартни метрики: daily active users, revenue, conversion rate, retention, user engagement. Може да се създаде и персонализирана метрика на база всяко събитие Analytics с допълнителни параметри. Например метриката „Процент потребители, достигнали до екрана за плащане” се създава от събитието screen_view с параметър screen_name = „payment”.

Препоръчва се избор на една първична метрика (primary metric), на базата на която се взема решението за успеха на експеримента, и 2–3 вторични метрики за допълнителен анализ. Изборът на няколко първични метрики увеличава риска от фалшиво положителен резултат (multiple comparison problem). Ако избраната първична метрика не показва статистически значимо подобрение, експериментът се счита за неуспешен, дори ако вторичните метрики са се подобрили.

Примери за код за Remote Config в Kotlin

Ще разгледаме интеграцията на Remote Config в Android приложение на Kotlin. Примерите включват инициализация на SDK с персонализирано време за кеширане, получаване на параметри от различни типове, имплементиране на A/B условие от страна на клиента и обработка на грешки при недостъпност на сървъра. Целият код се изпълнява в main activity или Application клас, така че параметрите да са достъпни от самото начало на приложението.

Преди използване добавете зависимостта: implementation(„com.google.firebase:firebase-config”) чрез Firebase BOM. Уверете се, че Firebase Analytics също е свързан, тъй като Remote Config използва Analytics за предаване на потребителски свойства.

Инициализация и получаване на параметри

Първият пример — основна настройка на Remote Config с минимален интервал на fetch от 1 час за продукция. SDK се инициализира в метода onCreate на Application класа. След fetchAndActivate се проверява стойността на параметъра welcome_message, който може да бъде променен от разстояние за екрана за добре дошли.

kotlin
class MainApp : Application() {

    override fun onCreate() {
        super.onCreate()
        val remoteConfig = Firebase.remoteConfig
        val settings = FirebaseRemoteConfigSettings.Builder()
            .setMinimumFetchIntervalInSeconds(3600)
            .build()

        remoteConfig.setConfigSettingsAsync(settings)
        remoteConfig.setDefaultsAsync(
            R.xml.remote_config_defaults
        )

        remoteConfig.fetchAndActivate()
            .addOnCompleteListener { task ->
                if (task.isSuccessful) {
                    val welcomeMsg = remoteConfig
                        .getString("welcome_message")
                    Log.d("RemoteConfig", welcomeMsg)
                }
            }
    }
}

В примера setDefaultsAsync зарежда default values от XML файла res/xml/remote_config_defaults.xml. Ако fetch завърши с грешка (няма мрежа, сървърът е недостъпен), приложението ще използва тези стойности. XML файлът съдържа същите имена на параметри като в конзолата Firebase: <entry key=„welcome_message”>Добре дошли!</entry>. Препоръчва се винаги да има default values за всички параметри на Remote Config.

Feature toggle с Remote Config

Вторият пример — feature toggle (флаг за включване на функция). Параметърът new_checkout_enabled е от тип boolean. Ако стойността е true — приложението показва новия екран за завършване на поръчка, ако false — стария. Feature toggle е най-популярният сценарий на Remote Config: промяната засяга само един параметър, не изисква модификация на логиката и може да бъде незабавно отменена.

kotlin
fun isFeatureEnabled(paramName: String): Boolean {
    return Firebase.remoteConfig
        .getBoolean(paramName)
}

// Използване в activity
if (isFeatureEnabled("new_checkout_enabled")) {
    navigateToNewCheckout()
} else {
    navigateToLegacyCheckout()
}

Функцията isFeatureEnabled капсулира достъпа до Remote Config и може лесно да бъде тествана чрез mock. За feature toggles се препоръчва използването на конвенция за именуване: префикс feature_, ff_ или flag_, така че в конзолата Firebase веднага да е ясно предназначението на параметъра. Пример: feature_new_onboarding, ff_dark_mode, flag_v3_api. Не използвайте параметри-флагове за включване/изключване повече от 3 месеца — натрупването на мъртви флагове усложнява поддръжката.

Получаване на JSON конфигурация на тема

Третият пример — получаване на JSON параметър с настройки на темата на приложението. Параметърът app_theme съдържа JSON обект с primaryColor, borderRadius и fontFamily. От страна на клиента JSON се анализира с помощта на Gson или kotlinx.serialization и стойностите се прилагат към UI. Този подход позволява на дизайнерите да променят темата на приложението без участието на разработчик и без издаване на нова версия.

kotlin
data class AppTheme(
    val primaryColor: String = "#6200EE",
    val borderRadius: Int = 8,
    val fontFamily: String = "Roboto"
)

fun getAppTheme(): AppTheme {
    val json = Firebase.remoteConfig
        .getString("app_theme")
    return Gson().fromJson(json, AppTheme::class.java)
}

Работата с JSON изисква внимание: ако JSON в конзолата Firebase е невалиден (напр. липсва запетая), анализирането ще се провали и приложението ще получи default values вместо актуалната тема. Препоръчва се валидиране на JSON низовете преди публикуване чрез JSON валидатор. За продукция добавете try-catch при анализиране и записвайте грешките чрез Firebase Crashlytics.

Най-добри практики и ограничения

Firebase Remote Config е мощен инструмент, но при неправилна употреба може да доведе до проблеми с производителността, предвидимостта на поведението и сигурността. Ще разгледаме ключови практики, които ще помогнат за избягване на типични грешки при работа с услугата, и ограничения, които трябва да се вземат предвид при проектиране на архитектурата на приложението.

Избягвайте чувствителни данни — Remote Config не е предназначен за съхранение на тайни (API ключове, токени, пароли). Всички стойности на параметри са достъпни за клиентския код и могат да бъдат извлечени от паметта на приложението. За поверителни данни използвайте Cloud Functions със сървърна проверка или Secret Manager. В Remote Config съхранявайте само публични параметри: текстове, флагове, настройки на UI, URL адреси на публични крайни точки.

Тествайте всяка промяна преди публикуване за цялата аудитория. Използвайте A/B тест или публикуване за малък процент (1–5% от потребителите), за да проверите дали новата стойност не причинява срив и не разваля показването. Remote Config няма staging среда — всички промени се публикуват директно в продукция. Единственият безопасен начин за публикуване е постепенното внедряване.

Ограничения на платформата: максимален брой параметри — 2000 (за всички типове), максимален размер на една стойност — 256 KB, общ размер на отговора на сървъра — 800 KB. Броят на потребителските свойства (user properties), които могат да се използват в Remote Config, е ограничен до 25. Минимален интервал на fetch — 0 секунди (за отстраняване на грешки), но злоупотребата може да доведе до превишаване на квотата на Cloud Functions (30 000 заявки в минута на проект).

Често задавани въпроси

Може ли Remote Config да работи без интернет?

Да, при липса на мрежа Remote Config използва стойностите по подразбиране, зададени в кода или XML файла. След възстановяване на връзката SDK автоматично ще изпълни fetch при следващото извикване или след изтичане на интервала за кеширане. Приложението никога няма да се срине поради липса на Remote Config, ако default values са зададени правилно.

Колко бързо промените достигат до потребителите?

По подразбиране — до 12 часа (интервал на кеширане). За ускоряване използвайте FCM push известие чрез бутона „Publish changes” в конзолата: приложението получава съобщението и незабавно изпълнява fetch. Минималният интервал на fetch за ускоряване може да се зададе чрез minimumFetchIntervalInSeconds.

Колко параметъра могат да се създадат безплатно?

Безплатно — до 2000 параметъра на проект, неограничен брой заявки в тарифа Spark. Ограничението от 2000 параметъра е меко: Firebase не блокира създаването на нови, но производителността може да намалее. За проекти с хиляди параметри се препоръчва използването на структурирани JSON параметри.

Може ли Remote Config да се използва на Flutter?

Да, Firebase Remote Config има официален Flutter плъгин: firebase_remote_config. API напълно съответства на естествените Android и iOS SDK. Плъгинът поддържа всички типове параметри, fetchAndActivate, слушатели за промени и интеграция с Firebase Analytics за A/B тестване.

По какво се различава Remote Config от Firebase Feature Flags?

Firebase Feature Flags е отделна услуга за управление на функции с поддръжка на целеви аудитории и експерименти. Remote Config е по-обща услуга за всякакви параметри, включително feature toggles. Feature Flags предоставят специален интерфейс и интеграция с Cloud Run, но Remote Config остава основният инструмент за повечето сценарии.

Резюме

  • Firebase Remote Config — облачна услуга за управление на параметри на приложение без публикуване на актуализации.
  • Механизъм на работа — pull модел с кеширане до 12 часа и възможност за push чрез FCM.
  • Условията позволяват задаване на различни стойности за различни групи потребители на база атрибути на устройството.
  • A/B тестването е вградено в Remote Config и е интегрирано с Firebase Analytics за изчисляване на статистическа значимост.
  • Сигурност — Remote Config не е предназначен за съхранение на тайни, а само за публични параметри.
  • Feature toggles — най-популярният сценарий: включване/изключване на функции чрез един boolean параметър.
  • Best practice — публикуване на промени за 1–5% от аудиторията преди внедряване за всички потребители.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също