Codelab „Remote Config in Android einbinden“

1. Einführung

Letzte Aktualisierung:09.03.2021

Was ist Firebase Remote Config?

Firebase Remote Config ist ein Clouddienst, mit dem Sie das Verhalten und das Design Ihrer App ändern können, ohne dass Nutzer ein App-Update herunterladen müssen. Die Nutzung ist kostenlos. Dabei erstellen Sie In-App-Standardwerte, mit denen Verhalten und Aussehen der App festgelegt werden. Später können Sie diese Werte dann über die Firebase Console oder die APIs des Remote-Config-Back-Ends für alle oder nur für einen Teil Ihrer App-Nutzer überschreiben. Ihre App steuert, wann Updates angewendet werden. Sie kann häufig nach Updates suchen und diese mit nur geringen Auswirkungen auf die Leistung anwenden.

Wie funktioniert das?

Remote Config enthält eine Clientbibliothek, die wichtige Aufgaben wie das Abrufen und Cachen von Parameterwerten übernimmt. Sie haben aber weiterhin die Kontrolle darüber, wann neue Werte aktiviert werden, damit sie sich auf die Nutzererfahrung Ihrer App auswirken. So können Sie die App-Erfahrung schützen, indem Sie den Zeitpunkt von Änderungen steuern.

Die get-Methoden der Remote Config-Clientbibliothek bieten einen einzigen Zugriffspunkt für Parameterwerte. Ihre App ruft serverseitige Werte mit derselben Logik ab, mit der sie In-App-Standardwerte abruft. So können Sie die Funktionen von Remote Config Ihrer App hinzufügen, ohne viel Code schreiben zu müssen.

Um In-App-Standardwerte zu überschreiben, erstellen Sie in der Firebase Console oder mit den APIs des Remote-Config-Back-Ends Parameter mit denselben Namen wie die in Ihrer App verwendeten Parameter. Für jeden Parameter können Sie einen serverseitigen Standardwert festlegen, um den In-App-Standardwert zu überschreiben. Außerdem können Sie bedingte Werte erstellen, um den In-App-Standardwert für App-Instanzen zu überschreiben, die bestimmte Bedingungen erfüllen. Diese Grafik zeigt, wie Parameterwerte im Remote-Config-Back-End und in Ihrer App priorisiert werden:

61f12f33d2ac3133.png

Lerninhalte

  • Firebase Remote Config implementieren
  • Werte mit Firebase Remote Config ändern, ohne die App zu aktualisieren

Voraussetzungen

  • Die neueste Version von Android Studio
  • Ein Firebase-Konto
  • (Empfohlen, aber optional) Ein physisches Android-Gerät zum Ausführen Ihrer App
  • Grundkenntnisse in Java oder Kotlin

2. Einrichtung

(Optional) Beispielcode herunterladen

In diesem Codelab erstellen Sie Ihre eigene Test-App. Wenn Sie die vorhandene Beispiel-App ansehen und ausführen möchten, können Sie den Beispielcode der Kurzanleitung herunterladen.

Klicken Sie auf die folgende Schaltfläche, um den gesamten Code für dieses Codelab herunterzuladen:

Entpacken Sie die heruntergeladene ZIP-Datei. Dadurch wird ein Stammordner mit dem Namen quickstart-android-master entpackt.

Alternativ können Sie das GitHub-Repository über die Befehlszeile klonen.

$ git clone https://github.com/firebase/quickstart-android.git

Das Repository enthält mehrere Ordner. Wir verwenden den android_studio_folder.png config Ordner.

(Optional) Beispielcode importieren

Starten Sie Android Studio und wählen Sie auf dem Begrüßungsbildschirm "Import project" aus. Öffnen Sie dann den heruntergeladenen Ordner und wählen Sie den Ordner android_studio_folder.png config aus. Klicken Sie dann auf „Öffnen“.

5f90353b0b519642.png

Neues Android-Projekt erstellen

  1. Starten Sie in Android Studio ein neues Projekt.
  2. Wählen Sie „Basic Activity“ aus.
  3. Gehen Sie auf dem Bildschirm „Configure Your Project“ (Projekt konfigurieren) so vor:
  4. Benennen Sie Ihr Projekt. Der Paketname und der Speicherort werden automatisch für Sie generiert.
  5. Sprache: Java
  6. Mindest-SDK 16

3. Android-Projekt Firebase und Firebase Analytics hinzufügen

Firebase-Projekt erstellen

Bevor Sie Firebase zu Ihrer Android-App hinzufügen können, müssen Sie ein Firebase-Projekt erstellen, um eine Verbindung zu Ihrer iOS-App herzustellen. Weitere Informationen zu Firebase-Projekten finden Sie unter Firebase-Projekte.

  1. Klicken Sie in der Firebase Console auf Projekt hinzufügen und wählen Sie dann einen Projektnamen aus oder geben Sie einen ein. 910158221fe46223.png

Wenn Sie ein vorhandenes Google Cloud Platform-Projekt (GCP) haben, können Sie es im Drop-down-Menü auswählen, um Firebase-Ressourcen hinzuzufügen.

  1. (Optional) Wenn Sie ein neues Projekt erstellen, können Sie die Projekt-ID bearbeiten.

Firebase weist Ihrem Firebase-Projekt automatisch eine eindeutige ID zu. Weitere Informationen dazu, wie Firebase die Projekt-ID verwendet, finden Sie unter Firebase-Projekte.

  1. Klicken Sie auf Weiter.
  2. Richten Sie Google Analytics für Ihr Projekt ein. So können Sie alle folgenden Firebase-Produkte optimal nutzen:
  • Firebase Crashlytics
  • Firebase Predictions
  • Firebase Cloud Messaging
  • Firebase In-App-Messaging
  • Firebase Remote Config
  • Firebase A/B Testing

Wenn Sie dazu aufgefordert werden, wählen Sie aus, ob Sie ein vorhandenes Google Analytics-Konto verwenden oder ein neues Konto erstellen möchten. Wenn Sie ein neues Konto erstellen, wählen Sie den Analytics-Berichtsstandort aus und akzeptieren Sie dann die Einstellungen zur Datenfreigabe und die Google Analytics-Nutzungsbedingungen für Ihr Projekt.

1282a798556779ab.png

48ade68c8de27d2.png

  1. Klicken Sie auf Projekt erstellen oder Firebase hinzufügen, wenn Sie ein vorhandenes GCP-Projekt verwenden.

Firebase stellt automatisch Ressourcen für Ihr Firebase-Projekt bereit. Nach Abschluss des Vorgangs werden Sie zur Übersichtsseite für Ihr Firebase-Projekt in der Firebase Console weitergeleitet.

App bei Firebase registrieren

Nachdem Sie ein Firebase-Projekt erstellt haben, können Sie Ihre Android-App hinzufügen.

Weitere Informationen zu Best Practices und Überlegungen zum Hinzufügen von Apps zu einem Firebase-Projekt, einschließlich des Umgangs mit mehreren Build-Varianten, finden Sie unter Firebase-Projekte.

  1. Öffnen Sie die Firebase Console.
  2. Klicken Sie oben auf der Seite „Projektübersicht“ auf das Symbol Android, um den Einrichtungsworkflow zu starten. Wenn Sie Ihrem Firebase-Projekt bereits eine App hinzugefügt haben, klicken Sie auf „App hinzufügen“, um die Plattformoptionen aufzurufen.
  3. Geben Sie im Feld Android-Paketname den Paketnamen Ihrer App ein.
  4. (Optional) Geben Sie einen App-Nickname ein.
  5. Lassen Sie das Feld „SHA-1“ leer, da SHA-1 für dieses Projekt nicht erforderlich ist.
  6. Klicken Sie auf App registrieren.

Firebase-Konfigurationsdatei hinzufügen

Als Nächstes werden Sie aufgefordert, eine Konfigurationsdatei herunterzuladen, die alle erforderlichen Firebase-Metadaten für Ihre App enthält. Klicken Sie auf google-services.json herunterladen , um Ihre Firebase-Konfigurationsdatei für Android (google-services.json) zu erhalten.

bc8ec7d3c9a28d75.png

a99b7415462dfc8b.png

Fügen Sie in der Gradle-Datei auf Projektebene (build.gradle) Regeln hinzu, um das Gradle-Plug-in der Google-Dienste einzufügen. Prüfen Sie, ob Sie auch das Maven-Repository von Google haben.

build.gradle-Datei auf Projektebene (<project>/build.gradle):

buildscript {

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
  }

  dependencies {
    // ...

    // Add the following line:
    classpath 'com.google.gms:google-services:4.3.5'  // Google Services plugin
  }
}

allprojects {
  // ...

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
    // ...
  }
}

Wenden Sie in der Gradle-Datei des Moduls (auf App-Ebene) (in der Regel app/build.gradle) das Gradle-Plug-in der Google-Dienste an:

build.gradle-Datei auf App-Ebene (<project>/<app-module>/build.gradle):

apply plugin: ‘com.android.application'

// Fügen Sie die folgende Zeile hinzu:

apply plugin: ‘com.google.gms.google-services' // Google Services plugin

android {

// ...

}

Firebase SDK zu Ihrer Android-App hinzufügen

Für Remote Config benötigen Sie Google Analytics, um das bedingte Targeting von App-Instanzen auf Nutzereigenschaften und Zielgruppen zu ermöglichen. Achten Sie also darauf, dass Google Analytics in Ihrem Projekt aktiviert ist.

(Dies ist bereits im Beispielcode der Kurzanleitung geschehen)

Deklarieren Sie mit der Firebase BoM für Android die Abhängigkeit für die Remote Config-Bibliothek für Android in der Gradle-Datei des Moduls (auf App-Ebene) (in der Regel app/build.gradle). Mit der Firebase BoM für Android haben Sie immer eine kompatible Version der Firebase Android-Bibliotheken in Ihrer App.

Außerdem müssen Sie im Rahmen der Einrichtung von Analytics das Firebase SDK für Google Analytics zu Ihrer App hinzufügen. Fügen Sie unter „Abhängigkeiten“ den folgenden Code hinzu:

app/build.gradle

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:26.6.0')

    // Declare 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'
}

Projekt mit Gradle-Dateien synchronisieren

Damit alle Abhängigkeiten für Ihre App verfügbar sind, synchronisieren Sie Ihr Projekt mit Gradle-Dateien. Wählen Sie dazu File > Sync Project with Gradle Files aus.

4. Hauptkomponenten für Remote Config

Wir sehen uns jetzt die Schritte an, um Remote Config in einer App zu verwenden. Diese Schritte wurden bereits im Code des Codelabs zur Kurzanleitung ausgeführt. Verwenden Sie diesen Abschnitt, während Sie den Code des Codelabs zur Kurzanleitung durchgehen, um zu verstehen, was passiert.

1. Remote Config Singleton-Objekt erstellen

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

MainActivity.java

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 für Ihre App verfügbar gemacht werden.

Während der Entwicklung empfiehlt es sich, ein relativ niedriges Mindestabrufintervall festzulegen. Weitere Informationen finden Sie unter Drosselung.

2. In-App-Standardparameterwerte festlegen

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

Sie können eine Reihe von Parameternamen und Standardparameterwerten mit einem Map-Objekt oder einer XML-Ressourcendatei definieren, die im Ordner res/xml Ihrer App gespeichert ist. In der Beispiel-App der Kurzanleitung für Remote Config wird eine XML-Datei verwendet, um Standardparameternamen und -werte zu definieren. So erstellen Sie eine eigene XML-Datei:

  1. Erstellen Sie unter dem Ordner res einen Ordner xml.

4b8a2a637a626e94.png

  1. Klicken Sie mit der rechten Maustaste auf den neu erstellten Ordner xml und erstellen Sie eine Datei.

358b4ba740120ece.png

  1. Legen Sie die Standardwerte fest. Im nächsten Abschnitt versuchen Sie, die Standardwerte in der XML-Datei der Kurzanleitung für Remote Config zu ändern.
  2. Fügen Sie diese Werte mit „setDefaultsAsync(int)“ dem Remote Config-Objekt hinzu, wie unten gezeigt:

MainActivity.java

mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

3. Parameterwerte zur Verwendung in Ihrer App abrufen

Jetzt können Sie Parameterwerte aus dem Remote Config-Objekt abrufen. Wenn Sie Werte im Back-End festlegen, abrufen und dann aktivieren, sind diese Werte für Ihre App verfügbar. Andernfalls erhalten Sie die In-App-Parameterwerte, die mit setDefaultsAsync(int) konfiguriert wurden. Rufen Sie die Werte mit der unten aufgeführten Methode ab, die dem von Ihrer App erwarteten Datentyp entspricht. Geben Sie den Parameterschlüssel als Argument an:

4. Werte abrufen und aktivieren

  1. Rufen Sie die Methode „fetch()“ auf, um Parameterwerte aus dem Remote Config-Back-End abzurufen. Alle Werte, die Sie im Back-End festgelegt haben, werden abgerufen und im Remote Config-Objekt gespeichert.
  2. Rufen Sie die Methode „activate()“ auf, um abgerufene Parameterwerte für Ihre App verfügbar zu machen. Wenn Sie Werte mit einem Aufruf abrufen und aktivieren möchten, können Sie eine „fetchAndActivate()“-Anfrage verwenden, um Werte aus dem Remote Config-Back-End abzurufen und sie für die App verfügbar zu machen:

MainActivity.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 Design Ihrer App auswirken, sollten Sie die abgerufenen Werte zu einem Zeitpunkt aktivieren, der für den Nutzer eine reibungslose Erfahrung gewährleistet, z. B. beim nächsten Öffnen der App. Weitere Informationen und Beispiele finden Sie unter Remote Config-Ladestrategien.

Drosselung

Wenn eine App innerhalb kurzer Zeit zu viele Abrufe ausführt, werden die Abrufe gedrosselt und das SDK gibt FirebaseRemoteConfigFetchThrottledException zurück. Vor SDK-Version 17.0.0 lag das Limit bei 5 Abrufanfragen innerhalb von 60 Minuten. Neuere Versionen haben großzügigere Limits.

Während der App-Entwicklung möchten Sie möglicherweise Konfigurationen sehr häufig abrufen und aktivieren (mehrmals pro Stunde), um die Entwicklung und das Testen Ihrer App schnell zu durchlaufen. Um eine schnelle Iteration an einem Projekt 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 Standard-Mindestabrufintervall für Remote Config beträgt 12 Stunden. Das bedeutet, dass Konfigurationen unabhängig von der Anzahl der tatsächlich ausgeführten Abrufe nicht mehr als einmal innerhalb von 12 Stunden aus dem Back-End abgerufen werden. Das Mindestabrufintervall wird in dieser Reihenfolge festgelegt:

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

Verwenden Sie FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long), um das Mindestabrufintervall auf einen benutzerdefinierten Wert festzulegen.

5. App-Verhalten mit Remote Config ändern

In-App-Standardparameter ändern

Öffnen Sie res/xml/remote_config_defaults.xml und ändern Sie die Standardwerte.

res/xml/remote_config_defaults.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- START xml_defaults -->
<defaultsMap>
    <entry>
        <key>loading_phrase</key>
        <value>Fetching config...</value>
    </entry>
    <entry>
        <key>welcome_message_caps</key>
        <value>false</value>
    </entry>
    <entry>
        <key>welcome_message</key>
        <value>Welcome to my awesome app!</value>
    </entry>
</defaultsMap>
    <!-- END xml_defaults -->

Änderung des In-App-Standardwerts überprüfen

  1. Führen Sie das Projekt in einem Emulator oder auf einem Testgerät aus, um das Verhalten zu bestätigen.
  2. Klicken Sie entweder auf die Java- oder die Kotlin-Version auf „Öffnen“.

c1582b989c25ced.png

  1. Sehen Sie sich die Willkommensnachricht in der Hauptansicht an.

4c838bf5a629d5b8.png

Parameterwerte im Remote Config-Back-End festlegen

Jetzt testen wir das Senden von Werten über Remote Config. Mit der Firebase Console oder den APIs des Remote-Config-Back-Ends können Sie neue serverseitige Standardwerte erstellen, die die In-App-Werte gemäß Ihrer gewünschten bedingten Logik oder Nutzerausrichtung überschreiben. In diesem Abschnitt werden die Schritte in der Firebase Console beschrieben, um diese Werte zu erstellen.

  1. Öffnen Sie die Firebase Console und dann Ihr Projekt.
  2. Wählen Sie im Menü auf der linken Seite im Bereich „Interaktion“ die Option Remote Config aus, um das Remote Config-Dashboard aufzurufen.
  3. Geben Sie unter Parameter hinzufügen den Parameter key. ein. Fügen Sie unter Default value den gewünschten Text hinzu. Klicken Sie dann auf „Parameter hinzufügen“. Für dieses Codelab verwenden wir die Parameterschlüssel in der Datei res/xml/remote_config_defaults.xml. Weitere Informationen finden Sie in der folgenden Tabelle:

Parameterschlüssel

Standardwert (remote_config_defaults.xml)

Beschreibung

loading_phrase

Konfiguration wird abgerufen...

String; wird beim Abrufen von Remote Config-Werten angezeigt.

welcome_message_caps

falsch

Boolesch; wenn „true“, wird „welcome_message“ in Großbuchstaben geändert.

welcome_message

Willkommen in meiner tollen App!

String; Willkommensnachricht

Beispiel-Screenshot:

28fa48f18da43002.png

  1. Wenn Sie alle Parameter hinzugefügt haben, klicken Sie auf „Änderungen veröffentlichen“.
  2. Führen Sie Ihre App noch einmal in einem Emulator oder auf einem Gerät aus und klicken Sie dieses Mal auf die Schaltfläche „Remote-Willkommensnachricht abrufen“.

cfe900477549adb7.png

  1. Die Willkommensnachricht sollte anhand Ihres Remote Config-Parameters und Ihrer Werte aktualisiert werden.

6. Glückwunsch

Glückwunsch! Sie haben Remote Config erfolgreich verwendet, um die Willkommensnachricht zu ändern. Es gibt viele weitere Möglichkeiten, Remote Config zu nutzen, um Apps zu ändern und anzupassen. Weitere Informationen finden Sie in den folgenden zusätzlichen Ressourcen: