Za pomocą Firebase Remote Config możesz określać parametry w aplikacji i aktualizować ich wartości w chmurze, co pozwala modyfikować wygląd i działanie aplikacji bez jej rozpowszechniania. W tym przewodniku znajdziesz instrukcje rozpoczęcia pracy i przykładowy kod, który możesz skopiować lub pobrać z repozytorium GitHub firebase/quickstart-android.
Krok 1. Dodaj do aplikacji Firebase i pakiet SDK Zdalnej konfiguracji
Jeśli jeszcze nie masz tego za sobą, dodaj Firebase do swojego projektu na Androida.
W przypadku Remote Config usługa Google Analytics jest wymagana do warunkowego kierowania instancji aplikacji na właściwości użytkowników i listy odbiorców. Upewnij się, że w projekcie włączysz Google Analytics.
W pliku Gradle modułu (na poziomie aplikacji) (zwykle
<project>/<app-module>/build.gradle.kts
lub<project>/<app-module>/build.gradle
) dodaj zależność z biblioteką Remote Config na Androida. Zalecamy użycie metody Firebase Android BoM aby kontrolować obsługę wersji biblioteki.W ramach konfigurowania Analytics musisz też dodać do aplikacji pakiet SDK Firebase dla Google Analytics.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.4.0")) // Add the dependencies for the Remote Config and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-config") implementation("com.google.firebase:firebase-analytics") }
Dzięki użyciu Firebase Android BoMaplikacja zawsze będzie używać zgodnych wersji bibliotek Firebase na Androida.
(Alternatywnie) Dodaj zależności biblioteki Firebase bez używania pakietu BoM
Jeśli nie chcesz używać biblioteki Firebase BoM, musisz określić każdą wersję biblioteki Firebase w wierszu zależności.
Pamiętaj, że jeśli używasz wielu bibliotek Firebase w aplikacji, zalecamy korzystanie z BoM do zarządzania wersjami biblioteki. Dzięki temu wszystkie wersje są zgodne.
dependencies { // Add the dependencies for the Remote Config and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-config:22.0.0") implementation("com.google.firebase:firebase-analytics:22.1.2") }
Krok 2. Pobierz obiekt singletona Remote Config
Pobierz instancję obiektu Remote Config i ustaw minimalny interwał pobierania umożliwiający częste odświeżanie:
Kotlin+KTX
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Obiekt typu singleton służy do przechowywania domyślnych wartości parametrów w aplikacji, pobierania zaktualizowanych wartości parametrów z backendu oraz kontrolowania, kiedy pobrane wartości są udostępniane aplikacji.
Podczas programowania zalecamy ustawienie stosunkowo niskiej minimalnej wartości pobierania interwału. Zobacz Ograniczanie wykorzystania .
Krok 3. Ustaw domyślne wartości parametrów w aplikacji
Domyślne wartości parametrów w aplikacji możesz ustawić w Remote Config dzięki czemu aplikacja działa zgodnie z oczekiwaniami jeszcze przed nawiązaniem połączenia Remote Config dzięki temu, że w razie braku wartości domyślne są dostępne ustawionym w backendzie.
Zdefiniuj zbiór nazw i domyślnych wartości parametrów za pomocą funkcji Map (Mapuj) lub Plik zasobów XML w folderze
res/xml
aplikacji. Przykładowa aplikacja Remote Config z krótkiego wprowadzenia korzysta z pliku XML do definiowania domyślnych nazw i wartości parametrów.Jeśli masz już skonfigurowane wartości parametrów Remote Config w backendzie, możesz pobrać wygenerowany plik XML zawierający wszystkie wartości domyślne i zapisać go w katalogu
res/xml
aplikacji:REST
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=XML -o remote_config_defaults.xml
Konsola Firebase
W sekcji Parametry otwórz Menu i kliknij Pobierz wartości domyślne.
Gdy pojawi się prośba, włącz plik .xml na Androida, a następnie kliknij Pobierz plik.
Dodaj te wartości do obiektu Remote Config za pomocą atrybutu
setDefaultsAsync(int)
, jak pokazano poniżej:Kotlin+KTX
remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Krok 4. Uzyskaj wartości parametrów, które będą używane w Twojej aplikacji
Teraz możesz pobierać wartości parametrów z obiektu Remote Config. Jeśli ustawisz wartości w backendzie, pobierzesz je, a następnie aktywujesz, będą one dostępne w aplikacji. W przeciwnym razie otrzymasz wartości parametrów skonfigurowane w aplikacji za pomocą parametru setDefaultsAsync(int)
.
Aby uzyskać te wartości, wywołaj podaną poniżej metodę, która jest mapowana na typ danych
oczekiwanych przez aplikację, podając klucz parametru jako argument:
Krok 5. Ustaw wartości parametrów w backendzie Remote Config
Za pomocą konsoli Firebase lub Remote Config backendowych interfejsów API możesz tworzyć nowe domyślne wartości po stronie serwera, które zastąpią wartości w aplikacji zgodnie z wybraną przez Ciebie logiką warunkową lub kierowaniem na użytkowników. W tej sekcji opisano czynności do wykonania w konsoli Firebase, aby utworzyć te wartości.
- Otwórz projekt w konsoli Firebase.
- Wybierz Remote Config z menu, aby wyświetlić Remote Config panelu.
- Zdefiniuj parametry o takich samych nazwach jak parametry zdefiniowane w sekcji do aplikacji. Dla każdego parametru możesz ustawić wartość domyślną (która będzie ostatecznie zastąpić odpowiednią wartość domyślną w aplikacji). ustawić wartości warunkowe. Więcej informacji znajdziesz w sekcji Remote Config Parametry i warunki.
Krok 6. Pobierz i aktywuj wartości
- Aby pobrać wartości parametrów z back-endu Remote Config, wywołaj metodę
fetch()
. Wszystkie wartości ustawione w backendzie są pobierane i przechowywane w obiekcie Remote Config. Aby udostępnić wartości wygenerowane przez funkcję wywołania parametru aplikacji, wywołaj metodę
activate()
.Jeśli chcesz pobrać i aktywować wartości w jednym wywołaniu, możesz użyć żądania
fetchAndActivate()
, aby pobrać wartości z poziomu backendu Remote Config i udostępnić je aplikacji:Kotlin+KTX
remoteConfig.fetchAndActivate() .addOnCompleteListener(this) { task -> if (task.isSuccessful) { val updated = task.result Log.d(TAG, "Config params updated: $updated") Toast.makeText( this, "Fetch and activate succeeded", Toast.LENGTH_SHORT, ).show() } else { Toast.makeText( this, "Fetch failed", Toast.LENGTH_SHORT, ).show() } displayWelcomeMessage() }
Java
mFirebaseRemoteConfig.fetchAndActivate() .addOnCompleteListener(this, new OnCompleteListener<Boolean>() { @Override public void onComplete(@NonNull Task<Boolean> task) { if (task.isSuccessful()) { boolean updated = task.getResult(); Log.d(TAG, "Config params updated: " + updated); Toast.makeText(MainActivity.this, "Fetch and activate succeeded", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "Fetch failed", Toast.LENGTH_SHORT).show(); } displayWelcomeMessage(); } });
Zaktualizowane wartości parametrów wpływają na działanie i wygląd aplikacji, dlatego należy aktywować pobrane wartości w takim momencie, aby zapewnić użytkownikowi płynne działanie, np. gdy otworzy on aplikację po raz kolejny. Więcej informacji i przykładów znajdziesz w artykule Strategie wczytywania Zdalnej konfiguracji.
Krok 7. Słuchaj aktualizacji w czasie rzeczywistym
Po pobraniu wartości parametrów możesz używać funkcji Remote Config w czasie rzeczywistym, aby nasłuchuj aktualizacji z backendu Remote Config. Wydarzenia w czasie rzeczywistym Remote Config wysyła do połączonych urządzeń sygnały o dostępności aktualizacji. automatycznie pobierze zmiany po opublikowaniu nowego pliku Remote Config wersji.
Aktualizacje w czasie rzeczywistym są obsługiwane przez pakiet SDK Firebase dla aplikacji Android w wersji 21.3.0 lub nowszej (Firebase BoM wersji 31.2.4 lub nowszej).
W aplikacji użyj polecenia
addOnConfigUpdateListener()
, aby zacząć nasłuchiwać aktualizacji i automatycznie pobierać nowe wartości parametrów. ZaimplementujonUpdate()
wywołanie zwrotne, aby aktywować zaktualizowaną konfigurację.Kotlin+KTX
remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener { override fun onUpdate(configUpdate : ConfigUpdate) { Log.d(TAG, "Updated keys: " + configUpdate.updatedKeys); if (configUpdate.updatedKeys.contains("welcome_message")) { remoteConfig.activate().addOnCompleteListener { displayWelcomeMessage() } } } override fun onError(error : FirebaseRemoteConfigException) { Log.w(TAG, "Config update error with code: " + error.code, error) } })
Java
mFirebaseRemoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() { @Override public void onUpdate(ConfigUpdate configUpdate) { Log.d(TAG, "Updated keys: " + configUpdate.getUpdatedKeys()); mFirebaseRemoteConfig.activate().addOnCompleteListener(new OnCompleteListener<Boolean>() { @Override public void onComplete(@NonNull Task<Boolean> task) { displayWelcomeMessage(); } }); } @Override public void onError(FirebaseRemoteConfigException error) { Log.w(TAG, "Config update error with code: " + error.getCode(), error); } });
Gdy następnym razem opublikujesz nową wersję aplikacji Remote Config, urządzenia które używają Twojej aplikacji i nasłuchują zmian, wywołuje funkcję
ConfigUpdateListener
Ograniczenia
Jeśli aplikacja pobierze zbyt wiele razy w krótkim czasie, wywołania pobierania zostaną
ogranicza się i pakiet SDK powraca
FirebaseRemoteConfigFetchThrottledException
Przed wersją pakietu SDK 17.0.0 funkcja
Obowiązuje limit 5 żądań pobierania w ciągu 60 minut
(nowsze wersje mają bardziej mniej rygorystyczne limity).
Podczas tworzenia aplikacji warto pobrać i aktywować konfiguracje
często (wiele razy na godzinę), co pozwala na szybkie iteracje w miarę tworzenia
przetestować aplikację. Aktualizacje w czasie rzeczywistym Remote Config automatycznie omijają
buforowanie, gdy konfiguracja na serwerze jest aktualizowana. Uwzględnienie szybkiej iteracji
w projekcie z maksymalnie 10 programistami, możesz tymczasowo ustawić
FirebaseRemoteConfigSettings
obiekt z krótkim minimalnym interwałem pobierania
(setMinimumFetchIntervalInSeconds
) w aplikacji.
Domyślny minimalny interwał pobierania w przypadku Remote Config wynosi 12 godzin, co oznacza, że konfiguracje nie będą pobierane z back-endu częściej niż raz w ciągu 12 godzin, niezależnie od liczby wywołań funkcji pobierania. W szczególności minimalny interwał pobierania jest określany w tej kolejności:
- Parametr w polu
fetch(long)
- Parametr w pliku
FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
- Wartość domyślna 12 godzin
Aby ustawić minimalny interwał pobierania na wartość niestandardową, użyj funkcji FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)
.
Dalsze kroki
Jeśli jeszcze tego nie zrobisz, zapoznaj się z Remote Config przypadkami użycia i pojęciami kluczowymi oraz dokumentacją dotyczącą zaawansowanych strategii, w tym: