Erste Schritte mit Firebase Remote Config


Mit Firebase Remote Config können Sie Parameter in Ihrer App definieren und ihre Werte in der Cloud aktualisieren. So können Sie das Erscheinungsbild und Verhalten Ihrer App ändern, ohne ein App-Update bereitzustellen. Dieser Leitfaden führt Sie durch die ersten Schritte und enthält Beispielcode, den Sie alle aus dem GitHub-Repository firebase/quickstart-android klonen oder herunterladen können.

Schritt 1: Firebase und das Remote Config SDK in die App einbinden

  1. Fügen Sie Ihrem Android-Projekt Firebase hinzu, falls noch nicht geschehen.

  2. Für Remote Config ist Google Analytics erforderlich, um das bedingte Targeting von App-Instanzen auf Nutzereigenschaften und Zielgruppen zu ermöglichen. Aktivieren Sie Google Analytics in Ihrem Projekt.

  3. Fügen Sie in der Gradle-Datei des Moduls (auf Anwendungsebene) (in der Regel <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle) die Abhängigkeit für die Remote Config-Bibliothek für Android hinzu. Wir empfehlen, die Firebase Android BoM zu verwenden, um die Versionierung der Bibliothek zu steuern.

    Beim Einrichten von Analytics musst du deiner App außerdem das Firebase SDK für Google Analytics hinzufügen.

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

    Mit der Firebase Android BoM haben Sie immer eine kompatible Version der Firebase Android-Bibliotheken in Ihrer App.

    Alternative: Firebase-Bibliotheksabhängigkeiten ohne BoM hinzufügen

    Wenn Sie Firebase BoM nicht verwenden, müssen Sie jede Firebase-Bibliotheksversion in der entsprechenden Abhängigkeitszeile angeben.

    Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir Ihnen dringend, die Bibliotheksversionen mithilfe der BoM zu verwalten. So wird sichergestellt, dass alle Versionen kompatibel sind.

    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.1")
        implementation("com.google.firebase:firebase-analytics:22.1.2")
    }
    Sie suchen nach einem Kotlin-spezifischen Bibliotheksmodul? Ab Oktober 2023 (Firebase BoM 32.5.0) können sowohl Kotlin- als auch Java-Entwickler das Hauptbibliotheksmodul verwenden. Weitere Informationen finden Sie in den häufig gestellten Fragen zu dieser Initiative.

Schritt 2: Remote Config-Singleton-Objekt abrufen

Erstellen Sie eine Remote Config-Objektinstanz und legen Sie das Mindestabrufintervall fest, um häufige Aktualisierungen zu ermöglichen:

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);

Das Singleton-Objekt wird verwendet, um In-App-Standardparameterwerte zu speichern, aktualisierte Parameterwerte aus dem Backend abzurufen und zu steuern, wann abgerufene Werte für Ihre App verfügbar gemacht werden.

Während der Entwicklung wird empfohlen, ein relativ niedriges Mindestabrufintervall festzulegen. Weitere Informationen finden Sie unter Drosselung.

Schritt 3: In-App-Standardparameterwerte festlegen

Sie können In-App-Standardparameterwerte im Remote Config-Objekt festlegen, damit sich Ihre Anwendung wie beabsichtigt verhält, bevor sie eine Verbindung zum Remote Config-Back-End herstellt, und dass Standardwerte verfügbar sind, wenn im Back-End keine Werte festgelegt sind.

  1. Mithilfe eines Map-Objekts oder einer XML-Ressourcendatei, die im Ordner res/xml Ihrer Anwendung gespeichert ist, können Sie eine Reihe von Parameternamen und Standardparameterwerten festlegen. In der Beispiel-App der Remote Config-Schnellstartanleitung werden Standardparameternamen und ‑werte in einer XML-Datei definiert.

    Wenn Sie bereits Remote Config-Backendparameterwerte konfiguriert haben, können Sie eine generierte XML-Datei mit allen Standardwerten herunterladen und im res/xml-Verzeichnis Ihrer App speichern:

    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
    

    Firebase-Konsole

    1. Öffnen Sie auf dem Tab Parameter das Menü und wählen Sie Standardwerte herunterladen aus.

    2. Aktivieren Sie .xml für Android, wenn Sie dazu aufgefordert werden, und klicken Sie dann auf Datei herunterladen.

  2. Fügen Sie diese Werte dem Remote Config-Objekt mit setDefaultsAsync(int) hinzu, wie hier gezeigt:

    Kotlin+KTX

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

Schritt 4: Parameterwerte zur Verwendung in Ihrer App abrufen

Sie können jetzt Parameterwerte aus dem Remote Config-Objekt abrufen. Wenn Sie Werte im Backend festlegen, abrufen und dann aktivieren, sind diese Werte für Ihre App verfügbar. Andernfalls werden die In-App-Parameterwerte zurückgegeben, die mit setDefaultsAsync(int) konfiguriert wurden. Rufen Sie dazu die unten aufgeführte Methode auf, die dem von Ihrer App erwarteten Datentyp zugeordnet ist, und geben Sie den Parameterschlüssel als Argument an:

Schritt 5: Parameterwerte im Remote Config-Backend festlegen

Mit der Firebase Console oder den Remote Config Backend-APIs können Sie neue serverseitige Standardwerte erstellen, die die In-App-Werte gemäß der gewünschten bedingten Logik oder dem Nutzer-Targeting überschreiben. In diesem Abschnitt werden die Schritte zur Firebase-Konsole zum Erstellen dieser Werte beschrieben.

  1. Öffnen Sie Ihr Projekt in der Firebase-Konsole.
  2. Wählen Sie im Menü Remote Config aus, um das Dashboard für Remote Config aufzurufen.
  3. Definieren Sie Parameter mit denselben Namen wie die Parameter, die Sie in Ihrer App definiert haben. Sie können für jeden Parameter einen Standardwert festlegen, der den entsprechenden In-App-Standardwert überschreibt. Außerdem können Sie bedingte Werte festlegen. Weitere Informationen finden Sie unter Remote Config-Parameter und -Bedingungen.

Schritt 6: Werte abrufen und aktivieren

  1. Wenn du Parameterwerte aus dem Remote Config-Backend abrufen möchtest, rufe die Methode fetch() auf. Alle Werte, die Sie im Backend festlegen, werden abgerufen und im Remote Config-Objekt gespeichert.
  2. Wenn Sie abgerufene Parameterwerte für Ihre App verfügbar machen möchten, rufen Sie die Methode activate() auf.

    Wenn Sie Werte in einem einzigen Aufruf abrufen und aktivieren möchten, können Sie eine fetchAndActivate()-Anfrage verwenden, um Werte aus dem Remote Config-Backend abzurufen und für die App verfügbar zu machen:

    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();
                }
            });

Da sich diese aktualisierten Parameterwerte auf das Verhalten und das Erscheinungsbild Ihrer App auswirken, sollten Sie die abgerufenen Werte zu einem Zeitpunkt aktivieren, der eine reibungslose Nutzung für Ihre Nutzer gewährleistet, z. B. wenn der Nutzer Ihre App das nächste Mal öffnet. Weitere Informationen und Beispiele finden Sie unter Ladestrategien für Remote Config.

Schritt 7: In Echtzeit nach Updates suchen

Nachdem Sie Parameterwerte abgerufen haben, können Sie mit Remote Config in Echtzeit auf Aktualisierungen vom Remote Config-Backend warten. Remote Config signalisiert verbundenen Geräten in Echtzeit, wenn Updates verfügbar sind, und ruft die Änderungen automatisch ab, nachdem eine neue Remote Config-Version veröffentlicht wurde.

Echtzeitaktualisierungen werden vom Firebase SDK für Android ab Version 21.3.0 (Firebase BoM ab Version 31.2.4) unterstützt.

  1. Verwenden Sie in Ihrer App addOnConfigUpdateListener(), um nach Updates zu suchen und neue Parameterwerte automatisch abzurufen. Implementieren Sie den onUpdate()-Callback, um die aktualisierte Konfiguration zu aktivieren.

    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);
        }
    });
  2. Wenn Sie das nächste Mal eine neue Version Ihrer Remote Config veröffentlichen, rufen Geräte, auf denen Ihre App ausgeführt wird und die auf Änderungen warten, die ConfigUpdateListener auf.

Drosselung

Wenn eine App innerhalb kurzer Zeit zu oft abgerufen wird, werden Abrufaufrufe gedrosselt und das SDK gibt FirebaseRemoteConfigFetchThrottledException zurück. Vor der SDK-Version 17.0.0 lag das Limit bei 5 Abrufanfragen in einem 60-Minuten-Fenster (neuere Versionen haben weitergehendere Limits).

Während der Anwendungsentwicklung kann es sinnvoll sein, Konfigurationen sehr häufig (viele Male pro Stunde) abzurufen und zu aktivieren, damit Sie beim Entwickeln und Testen Ihrer Anwendung schnell iterieren können. Remote Config-Echtzeitaktualisierungen umgehen automatisch den Cache, wenn die Konfiguration auf dem Server aktualisiert wird. Um die schnelle Wiederholung eines Projekts mit bis zu 10 Entwicklern zu ermöglichen, können Sie in Ihrer App vorübergehend ein FirebaseRemoteConfigSettings-Objekt mit einem kurzen Mindestabrufintervall (setMinimumFetchIntervalInSeconds) festlegen.

Das standardmäßige Mindestabrufintervall für Remote Config beträgt 12 Stunden. Das bedeutet, dass Konfigurationen innerhalb eines Zeitraums von 12 Stunden nicht mehr als einmal aus dem Backend abgerufen werden, unabhängig davon, wie viele Abrufaufrufe tatsächlich ausgeführt werden. Konkret wird das minimale Abrufintervall in der folgenden Reihenfolge ermittelt:

  1. Der Parameter in fetch(long)
  2. Der Parameter in FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. Der Standardwert von 12 Stunden

Wenn Sie das Mindestabrufintervall auf einen benutzerdefinierten Wert festlegen möchten, verwenden Sie FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long).

Nächste Schritte

Sehen Sie sich die Remote Config Anwendungsfälle an und lesen Sie die Dokumentation zu wichtigen Konzepten und erweiterten Strategien, darunter: