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, што може довести до crash-а.

Дефинисање default values се врши на два начина: програмски преко позива setDefaultsAsync или преко XML датотеке. Програмски начин је згодан за мале пројекте: све вредности се постављају директно у коду једном при покретању апликације. Фајловски начин је пожељнији за пројекте са десетинама параметара: вредности се чувају у ресурсима и лако се уређују без рекомпајлирања. Препоручује се комбиновање: основна подешавања у XML-у, а специфична — програмски.

Асинхроност — кључна карактеристика Remote Config SDK-а. Метод fetchAndActivate() извршава захтев ка серверу у позадинској нити, не блокирајући UI. Након завршетка учитавања долази до активације — вредности параметара се ажурирају у меморији апликације. За праћење завршетка користите слушаоце или корутине (у Android/Kotlin-у). Корисник не треба да види „tрзање” 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) користите одвојене стринг или boolean параметре — лакше се читају у конзоли и лакше је пратити промене у историји верзија шаблона.

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 заврши greškom (нема мреже, сервер недоступан), апликација ће користити ове вредности. 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 при парсирању и логујте greške преко Firebase Crashlytics-а.

Најбоље праксе и ограничења

Firebase Remote Config је моћан алат, али при неправилној употреби може довести до проблема са перформансама, предвидљивошћу понашања и безбедношћу. Размотрићемо кључне праксе које ће помоћи у избегавању типичних грешака при раду са сервисом и ограничења која треба узети у обзир при пројектовању архитектуре апликације.

Избегавајте осетљиве податке — Remote Config није намењен за чување тајни (API кључева, токена, лозинки). Све вредности параметара су доступне клијентском коду и могу се извући из меморије апликације. За поверљиве податке користите Cloud Functions са серверском провером или Secret Manager. У Remote Config-у чувајте само јавне параметре: текстове, заставе, подешавања UI-ја, URL-ове јавних ендпоинта.

Тестирајте сваку промену пре објављивања за целокупну публику. Користите A/B тест или објављивање на мали проценат (1–5% корисника) да проверите да нова вредност не изазива crash и не ломи приказ. Remote Config нема staging окружење — све промене се објављују директно у продукцију. Једини сигуран начин објављивања је постепено увођење.

Ограничења платформе: максималан број параметара — 2000 (за све типове), максимална величина једне вредности — 256 KB, укупна величина одговора сервера — 800 KB. Број корисничких својстава (user properties) која се могу користити у Remote Config-у ограничен је на 25. Минимални интервал fetch-а — 0 секунди (за отклањање grešaka), али злоупотреба може довести до прекорачења квоте 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 пружају наменски UI и интеграцију са 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. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође