Za pomocą Zdalnej konfiguracji Firebase możesz definiować parametry w aplikacji i aktualizować ich wartości w chmurze, co pozwala zmieniać wygląd i działanie aplikacji bez jej aktualizowania. Ten przewodnik przedstawia krok po kroku, od czego zacząć, oraz przykładowy kod, który możesz skopiować lub pobrać z repozytorium GitHub firebase/quickstart-android.
Krok 1. Dodaj Firebase i pakiet SDK Zdalnej konfiguracji do aplikacji
Dodaj Firebase do swojego projektu na Androida, jeśli jeszcze go nie masz.
W przypadku Zdalnej konfiguracji usługa Google Analytics jest wymagana do kierowania warunkowego instancji aplikacji na właściwości użytkownika i odbiorców. Pamiętaj, aby włączyć Google Analytics w projekcie.
W pliku Gradle na poziomie modułu (na poziomie aplikacji) (zwykle
<project>/<app-module>/build.gradle.kts
lub<project>/<app-module>/build.gradle
) dodaj zależność z biblioteką Zdalnej konfiguracji na Androida. Do kontrolowania obsługi wersji biblioteki zalecamy używanie BOM Firebase na Androida.Podczas 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:32.8.1")) // 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 wykorzystaniu BM od Firebase Android Twoja aplikacja zawsze będzie używała zgodnych wersji bibliotek Firebase na Androida.
(Alternatywnie) Dodaj zależności biblioteki Firebase bez użycia BoM.
Jeśli nie chcesz używać BoM Firebase, musisz określić każdą wersję biblioteki Firebase w wierszu zależności.
Pamiętaj, że jeśli w aplikacji używasz wielu bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami biblioteki. Zapewni to zgodność wszystkich wersji.
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:21.6.3") implementation("com.google.firebase:firebase-analytics:21.6.2") }
Krok 2. Pobierz obiekt typu singleton Zdalnej konfiguracji
Pobierz instancję obiektu Zdalnej konfiguracji i ustaw minimalny odstęp czasu pobierania, który umożliwi 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 mają być dostępne dla aplikacji.
W trakcie programowania zalecane jest ustawienie stosunkowo niskiego minimalnego okresu pobierania. Więcej informacji znajdziesz w sekcji Ograniczanie.
Krok 3. Ustaw domyślne wartości parametrów w aplikacji
Domyślne wartości parametrów w aplikacji możesz ustawić w obiekcie Zdalnej konfiguracji, aby aplikacja zachowywała się zgodnie z oczekiwaniami przed nawiązaniem połączenia z backendem Zdalnej konfiguracji. Jeśli w backendzie nie ma ustawionych żadnych wartości domyślnych, będą dostępne wartości domyślne.
Zdefiniuj zbiór nazw i domyślnych wartości parametrów za pomocą obiektu Map lub pliku zasobów XML zapisanego w folderze
res/xml
aplikacji. Przykładowa aplikacja z szybkim wprowadzeniem do Zdalnej konfiguracji używa pliku XML do definiowania domyślnych nazw i wartości parametrów.Jeśli masz już skonfigurowane wartości parametrów backendu Zdalnej konfiguracji, możesz pobrać wygenerowany plik XML ze wszystkimi wartościami domyślnymi i zapisać go w katalogu
res/xml
swojej 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
Na karcie Parametry otwórz Menu i wybierz Pobierz wartości domyślne.
Gdy pojawi się prośba, włącz plik .xml na Androida, a potem kliknij Pobierz plik.
Dodaj te wartości do obiektu Zdalnej konfiguracji za pomocą
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. Pobierz wartości parametrów do wykorzystania w aplikacji
Teraz możesz pobierać wartości parametrów z obiektu Zdalnej konfiguracji. Jeśli ustawisz wartości w backendzie, pobierzesz je i aktywujesz, staną się one dostępne dla Twojej aplikacji. W przeciwnym razie wartości parametrów w aplikacji zostaną skonfigurowane za pomocą narzędzia setDefaultsAsync(int)
.
Aby uzyskać te wartości, wywołaj podaną poniżej metodę, która mapuje typ danych oczekiwany przez Twoją aplikację, podając klucz parametru jako argument:
Krok 5. Ustaw wartości parametrów w backendzie Zdalnej konfiguracji
Za pomocą konsoli Firebase lub interfejsów API backendu Zdalnej konfiguracji możesz tworzyć po stronie serwera nowe wartości domyślne, które zastępują wartości w aplikacji zgodnie z wybraną logiką warunkową lub kierowaniem na użytkowników. W tej sekcji znajdziesz instrukcje tworzenia tych wartości w konsoli Firebase.
- Otwórz projekt w konsoli Firebase.
- Wybierz z menu Zdalna konfiguracja, aby wyświetlić panel Zdalnej konfiguracji.
- Zdefiniuj parametry o takich samych nazwach jak parametry zdefiniowane w aplikacji. Dla każdego parametru możesz ustawić wartość domyślną (która ostatecznie zastąpi odpowiednią wartość domyślną w aplikacji). Możesz też ustawić wartości warunkowe. Więcej informacji znajdziesz w artykule Parametry i warunki Zdalnej konfiguracji.
Krok 6. Pobierz i aktywuj wartości
- Aby pobrać wartości parametrów z backendu Zdalnej konfiguracji, wywołaj metodę
fetch()
. Wszystkie wartości ustawione w backendzie są pobierane i zapisywane w obiekcie Zdalnej konfiguracji. Aby udostępnić aplikacji pobrane wartości parametrów, wywołaj metodę
activate()
.Jeśli chcesz pobrać i aktywować wartości w ramach jednego wywołania, możesz użyć żądania
fetchAndActivate()
, aby pobrać wartości z backendu Zdalnej konfiguracji 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(); } });
Te zaktualizowane wartości parametrów mają wpływ na działanie i wygląd aplikacji, dlatego należy aktywować pobrane wartości w czasie umożliwiającym bezproblemowe korzystanie z aplikacji, np. przy następnym uruchomieniu przez niego aplikacji. Więcej informacji i przykładów znajdziesz w artykule Strategie ładowania Zdalnej konfiguracji.
Krok 7. Nasłuchuj aktualizacji w czasie rzeczywistym
Po pobraniu wartości parametrów możesz za pomocą Zdalnej konfiguracji w czasie rzeczywistym nasłuchiwać aktualizacji z backendu Zdalnej konfiguracji. Zdalna konfiguracja w czasie rzeczywistym sygnalizuje połączone urządzenia, gdy dostępne są aktualizacje, i automatycznie pobiera zmiany po opublikowaniu nowej wersji Zdalnej konfiguracji.
Aktualizacje w czasie rzeczywistym są obsługiwane przez pakiet SDK Firebase na Androida w wersji 21.3.0 lub nowszej (Firebase BoM w wersji 31.2.4 lub nowszej).
Użyj w aplikacji polecenia
addOnConfigUpdateListener()
, aby zacząć nasłuchiwać aktualizacji i automatycznie pobierać nowe wartości parametrów. Zaimplementuj wywołanie zwrotneonUpdate()
, 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
() { @Override public void onComplete(@NonNull Task 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ę Zdalnej konfiguracji, urządzenia, na których działa Twoja aplikacja i nasłuchują zmian, wywołają funkcję
ConfigUpdateListener
.
Ograniczenia
Jeśli aplikacja pobiera zbyt wiele razy w krótkim okresie, wywołania pobierania są ograniczane, a pakiet SDK zwraca FirebaseRemoteConfigFetchThrottledException
. Przed pakietem SDK w wersji 17.0.0 limit wynosił 5 żądań pobierania w 60-minutowym okresie (nowsze wersje mają bardziej rygorystyczne limity).
Podczas tworzenia aplikacji możesz często pobierać i aktywować konfiguracje, aby przyspieszyć jej tworzenie i testowanie. Aktualizacje Zdalnej konfiguracji w czasie rzeczywistym automatycznie pomijają pamięć podręczną po zaktualizowaniu konfiguracji na serwerze. Aby przeprowadzić szybką iterację w projekcie obejmującym maksymalnie 10 programistów, możesz tymczasowo ustawić w aplikacji obiekt FirebaseRemoteConfigSettings
z niskim minimalnym interwałem pobierania (setMinimumFetchIntervalInSeconds
).
Domyślny minimalny odstęp czasu pobierania w przypadku Zdalnej konfiguracji to 12 godzin, co oznacza, że konfiguracja nie będzie pobierana z backendu więcej niż raz w ciągu 12 godzin, niezależnie od tego, ile rzeczywiście zostanie wywołanych. W szczególności minimalny interwał pobierania jest określany w tej kolejności:
- Parametr w pliku
fetch(long)
- Parametr w pliku
FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
- Wartość domyślna to 12 godzin.
Aby ustawić minimalny interwał pobierania na wartość niestandardową, użyj funkcji FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)
.
Dalsze kroki
Zapoznaj się z przypadkami użycia Zdalnej konfiguracji oraz dokumentacją kluczowych pojęć i zaawansowanych strategii, takich jak: