Pierwsze kroki ze Zdalnej konfiguracji Firebase


Za pomocą Zdalnej konfiguracji Firebase możesz zdefiniować 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 opisujemy, od czego zacząć, i przedstawiamy przykładowy kod, którego całość można sklonować lub pobrać repozytorium firebase/quickstart-android na GitHubie.

Krok 1. Dodaj do aplikacji Firebase i pakiet SDK Zdalnej konfiguracji

  1. Jeśli jeszcze nie masz tego za sobą, dodaj Firebase do swojego projektu na Androida.

  2. W przypadku Zdalnej konfiguracji usługa Google Analytics jest wymagana do obsługi kierowanie warunkowe instancji aplikacji właściwości użytkowników i odbiorców. Upewnij się, że włącz Google Analytics w swoim projekcie.

  3. w pliku Gradle (na poziomie aplikacji) modułu, (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle), dodaj zależność z biblioteki Zdalnej konfiguracji na Androida. Zalecamy użycie metody Funkcja BoM Firebase na Androida aby kontrolować obsługę wersji biblioteki.

    Podczas konfigurowania Analytics musisz też dodać pakiet SDK Firebase dla Google Analytics do aplikacji.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.1.2"))
    
        // 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")
    }
    

    Korzystając z BM Firebase Android BoM, Twoja aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.

    (Wersja alternatywna) Dodawanie zależności biblioteki Firebase bez korzystania z BM

    Jeśli nie chcesz używać 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 czemu wszystkie wersje

    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.0.2")
    }
    
    Szukasz modułu biblioteki korzystającego z usługi Kotlin? Zaczyna się za Październik 2023 r. (Firebase BoM 32.5.0), programiści, zarówno w języku Kotlin, jak i w języku Java, zależą od modułu biblioteki głównej (więcej informacji znajdziesz w Najczęstsze pytania na temat tej inicjatywy).

.

Krok 2. Pobierz obiekt klasy typu singleton Zdalnej konfiguracji

Pobierz instancję obiektu Zdalnej konfiguracji 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 singleton służy do przechowywania domyślnych wartości parametrów w aplikacji, pobierania aktualizacji wartości parametrów z backendu i kontrolować, kiedy pobierane wartości dostępnych w Twojej 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

Wartości domyślne parametrów w aplikacji możesz ustawić w Zdalnej konfiguracji. dzięki czemu aplikacja działa zgodnie z oczekiwaniami jeszcze przed nawiązaniem połączenia backend Zdalnej konfiguracji, dzięki czemu dostępne są wartości domyślne, jeśli nie są ustawionym w backendzie.

  1. 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. Krótkie wprowadzenie do Zdalnej konfiguracji przykładowa aplikacja korzysta z Plik 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, który zawiera wszystkie wartości domyślne zapisz ją 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

    1. W sekcji Parametry otwórz Menu i kliknij Pobierz wartości domyślne.

    2. Gdy pojawi się prośba, włącz plik .xml na Androida, a następnie kliknij Pobierz plik.

  2. Dodaj te wartości do obiektu Zdalnej konfiguracji za pomocą setDefaultsAsync(int), Jak widać:

    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 w backendzie, pobierz je, a następnie aktywuj, te wartości są dostępne dla aplikacji. W przeciwnym razie aplikacja wartości parametrów skonfigurowanych za pomocą 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 Zdalnej konfiguracji

Za pomocą konsoli Firebase lub interfejsy API backendu Zdalnej konfiguracji, możesz utworzyć nowe domyślne wartości po stronie serwera, które zastąpią wartości w aplikacji zgodnie z logiką warunkową lub kierowaniem na użytkowników. Ta sekcja i opis czynności tworzenia tych wartości w konsoli Firebase.

  1. W konsoli Firebase otwórz projekt.
  2. Aby ją wyświetlić, wybierz z menu Zdalna konfiguracja. panelu.
  3. 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 Parametry Zdalnej konfiguracji i Warunki.

Krok 6. Pobierz i aktywuj wartości

  1. Aby pobrać wartości parametrów z backendu Zdalnej konfiguracji, wywołaj funkcję fetch() . Wszystkie wartości ustawione w backendzie są pobierane i przechowywane w obiekcie Zdalnej konfiguracji.
  2. Aby udostępnić aplikacji pobrane wartości parametrów, wywołaj metodę activate() .

    W przypadku, gdy chcesz pobrać i aktywować wartości w jednym wywołaniu, może użyć żądania fetchAndActivate() do pobrania wartości z Backend Zdalnej konfiguracji i udostępnianie ich 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 wpływają na działanie i wygląd Twojej aplikacji, musisz aktywować pobrane wartości w takim czasie, aby zapewnić dla użytkownika, np. gdy następnym razem otworzy . Zapoznaj się ze strategiami wczytywania Zdalnej konfiguracji. .

Krok 7. Nasłuchuj aktualizacji w czasie rzeczywistym

Po pobraniu wartości parametrów możesz używać Zdalnej konfiguracji w czasie rzeczywistym, aby: nasłuchuj aktualizacji z backendu Zdalnej konfiguracji. Wydarzenia w czasie rzeczywistym Zdalna konfiguracja wysyła sygnały do połączonych urządzeń, gdy dostępne są aktualizacje. automatycznie pobiera zmiany po opublikowaniu nowej Zdalnej konfiguracji. wersji.

Aktualizacje w czasie rzeczywistym są obsługiwane przez pakiet SDK Firebase na Androida w wersji 21.3.0 lub nowszej (Firebase BoM) wersji 31.2.4 lub nowszej).

  1. Aby zacząć nasłuchiwać aktualizacji, użyj w aplikacji addOnConfigUpdateListener() i automatyczne pobieranie nowych wartości parametrów. Zaimplementuj onUpdate() 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() {
                @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);
        }
    });
    
  2. Gdy następnym razem opublikujesz nową wersję Zdalnej konfiguracji, 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 Zdalnej konfiguracji w czasie rzeczywistym pomijają 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 dla Zdalnej konfiguracji to 12 godzin, co oznacza, że konfiguracje są pobierane z backendu nie częściej niż raz w ciągu 12 godzin niezależnie od tego, ile zostało w rzeczywistości wywołań pobierania. Mówiąc konkretnie, minimalny odstęp czasu pobierania jest określany w tej kolejności:

  1. Parametr w polu fetch(long)
  2. Parametr w polu FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. 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ę ze Zdalną konfiguracją, jeśli jeszcze jej nie znasz. przypadkach użycia i przyjrzyj się niektórym dokumentację kluczowych koncepcji i zaawansowanych strategii, w tym: