了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

Beginnen Sie mit Firebase Remote Config


Sie können Firebase Remote Config verwenden, um Parameter in Ihrer App zu definieren und ihre Werte in der Cloud zu aktualisieren, sodass Sie das Aussehen und Verhalten Ihrer App ändern können, ohne ein App-Update verteilen zu müssen. Dieser Leitfaden führt Sie durch die Schritte für den Einstieg und enthält einige Beispielcodes, die alle zum Klonen oder Herunterladen aus dem GitHub-Repository firebase/quickstart-android verfügbar sind.

Schritt 1: Fügen Sie Ihrer App Firebase und das Remote Config SDK hinzu

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

  2. Für Remote Config ist Google Analytics für die bedingte Ausrichtung von App-Instanzen auf Benutzereigenschaften und Zielgruppen erforderlich. Stellen Sie sicher, dass Sie Google Analytics in Ihrem Projekt aktivieren .

  3. Fügen Sie in Ihrer Modul-Gradle-Datei (auf App-Ebene) (normalerweise <project>/<app-module>/build.gradle ) die Abhängigkeit für die Remote Config Android-Bibliothek hinzu. Wir empfehlen die Verwendung der Firebase Android BoM zur Steuerung der Bibliotheksversionierung.

    Außerdem müssen Sie im Rahmen der Einrichtung von Analytics das Firebase SDK für Google Analytics zu Ihrer App hinzufügen.

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:32.1.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-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    Durch die Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen von Firebase Android-Bibliotheken.

    (Alternative) Fügen Sie Firebase-Bibliotheksabhängigkeiten hinzu , ohne die Stückliste zu verwenden

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Beachten Sie, dass wir bei Verwendung mehrerer Firebase-Bibliotheken in Ihrer App dringend empfehlen, die BoM zum Verwalten von Bibliotheksversionen zu verwenden, wodurch sichergestellt wird, 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-ktx:21.4.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0'
    }
    

    Java

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

    Durch die Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen von Firebase Android-Bibliotheken.

    (Alternative) Fügen Sie Firebase-Bibliotheksabhängigkeiten hinzu , ohne die Stückliste zu verwenden

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Beachten Sie, dass wir bei Verwendung mehrerer Firebase-Bibliotheken in Ihrer App dringend empfehlen, die BoM zum Verwalten von Bibliotheksversionen zu verwenden, wodurch sichergestellt wird, 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:21.4.0'
        implementation 'com.google.firebase:firebase-analytics:21.3.0'
    }
    

Schritt 2: Rufen Sie das Remote Config-Singleton-Objekt ab

Rufen Sie eine Remote Config-Objektinstanz ab und legen Sie das minimale Abrufintervall 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 Back-End abzurufen und zu steuern, wann abgerufene Werte Ihrer App zur Verfügung gestellt werden.

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

Schritt 3: Legen Sie die Standardparameterwerte in der App fest

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

  1. Definieren Sie einen Satz von Parameternamen und Standardparameterwerten mithilfe eines Map- Objekts oder einer XML-Ressourcendatei, die im res/xml Ordner Ihrer App gespeichert ist. Die Remote Config-Schnellstart-Beispiel-App verwendet eine XML-Datei , um Standardparameternamen und -werte zu definieren.

    Wenn Sie bereits Remote Config-Backend-Parameterwerte konfiguriert haben, können Sie eine generierte XML-Datei herunterladen, die alle Standardwerte enthält, und sie im res/xml Verzeichnis Ihrer App speichern:

    AUSRUHEN

    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 der Registerkarte Parameter das Menü und wählen Sie Standardwerte herunterladen aus.

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

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

    Kotlin+KTX

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

Schritt 4: Abrufen von Parameterwerten zur Verwendung in Ihrer App

Jetzt können Sie Parameterwerte aus dem Remote Config-Objekt abrufen. Wenn Sie Werte im Back-End festlegen, abrufen und dann aktivieren, stehen diese Werte Ihrer App zur Verfügung. Andernfalls erhalten Sie die In-App-Parameterwerte, die mit setDefaultsAsync(int) konfiguriert wurden. Rufen Sie zum Abrufen dieser Werte 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: Legen Sie Parameterwerte im Remote Config-Backend fest

Mit der Firebase-Konsole oder den Remote Config-Back-End-APIs können Sie neue serverseitige Standardwerte erstellen, die die In-App-Werte gemäß Ihrer gewünschten Bedingungslogik oder Benutzerausrichtung überschreiben. In diesem Abschnitt werden die Schritte für die Firebase-Konsole zum Erstellen dieser Werte beschrieben.

  1. Öffnen Sie in der Firebase-Konsole Ihr Projekt.
  2. Wählen Sie Remote Config aus dem Menü aus, um das Remote Config-Dashboard anzuzeigen.
  3. Definieren Sie Parameter mit denselben Namen wie die Parameter, die Sie in Ihrer App definiert haben. Für jeden Parameter können Sie einen Standardwert festlegen (der schließlich den entsprechenden In-App-Standardwert überschreibt), und Sie können auch bedingte Werte festlegen. Weitere Informationen finden Sie unter Remote-Konfigurationsparameter und -bedingungen .

Schritt 6: Werte abrufen und aktivieren

  1. Rufen Sie zum Abrufen von Parameterwerten aus dem Remote Config-Backend die Methode fetch() auf. Alle Werte, die Sie im Backend festlegen, werden abgerufen und im Remote Config-Objekt gespeichert.
  2. Rufen Sie die activate() Methode auf, um Ihrer App abgerufene Parameterwerte zur Verfügung zu stellen.

    Für Fälle, in denen Sie Werte in einem Aufruf abrufen und aktivieren möchten, können Sie eine fetchAndActivate() -Anforderung verwenden, um Werte aus dem Remote Config-Backend abzurufen und sie der App zur Verfügung zu stellen:

    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 Erscheinungsbild Ihrer App auswirken, sollten Sie die abgerufenen Werte zu einem Zeitpunkt aktivieren, der eine reibungslose Erfahrung für Ihren Benutzer gewährleistet, z. B. wenn der Benutzer Ihre App das nächste Mal öffnet. Weitere Informationen und Beispiele finden Sie unter Strategien zum Laden von Remote-Konfigurationen .

Schritt 7: Hören Sie in Echtzeit auf Updates

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

Echtzeit-Updates werden vom Firebase SDK für Android v21.3.0+ (Firebase BoM v31.2.4+) unterstützt.

  1. Verwenden Sie in Ihrer App addOnConfigUpdateListener() , um auf Updates zu warten und automatisch alle neuen Parameterwerte 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() {
                @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. Wenn Sie das nächste Mal eine neue Version Ihrer Remotekonfiguration veröffentlichen, rufen Geräte, die Ihre App ausführen und auf Änderungen warten, den ConfigUpdateListener auf.

Drosselung

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

Während der App-Entwicklung möchten Sie möglicherweise Konfigurationen sehr häufig abrufen und aktivieren (viele Male pro Stunde), damit Sie beim Entwickeln und Testen Ihrer App schnell iterieren können. Echtzeit-Remote-Konfigurationsaktualisierungen umgehen automatisch den Cache, wenn die Konfiguration auf dem Server aktualisiert wird. Um eine schnelle Iteration eines Projekts mit bis zu 10 Entwicklern zu ermöglichen, können Sie in Ihrer App vorübergehend ein FirebaseRemoteConfigSettings Objekt mit einem niedrigen Mindestabrufintervall ( setMinimumFetchIntervalInSeconds ) festlegen.

Das standardmäßige Mindestabrufintervall für Remote Config beträgt 12 Stunden, was bedeutet, dass Konfigurationen nicht mehr als einmal in einem 12-Stunden-Fenster vom Back-End abgerufen werden, unabhängig davon, wie viele Abrufaufrufe tatsächlich getätigt werden. Insbesondere wird das minimale Abrufintervall in der folgenden Reihenfolge bestimmt:

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

Um das minimale Abrufintervall auf einen benutzerdefinierten Wert festzulegen, verwenden Sie FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) .

Nächste Schritte

If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: