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 das Verhalten Ihrer App ändern, ohne ein App-Update bereitzustellen.

Mit der Remote Config-Bibliothek werden In-App-Standardparameterwerte gespeichert, aktualisierte Parameterwerte aus dem Remote Config-Backend abgerufen und gesteuert, wann abgerufene Werte für Ihre App verfügbar gemacht werden. Weitere Informationen finden Sie unter Remote Config-Ladestrategien.

In dieser Anleitung werden die ersten Schritte erläutert und es wird Beispielcode bereitgestellt, der aus dem GitHub-Repository firebase/quickstart-unity geklont oder heruntergeladen werden kann.

Schritt 1: Remote Config zur App hinzufügen

Bevor Sie Remote Config verwenden können, müssen Sie Folgendes tun:

  • Registrieren Sie Ihr Unity-Projekt und konfigurieren Sie es für die Verwendung von Firebase.

    • Wenn in Ihrem Unity-Projekt bereits Firebase verwendet wird, ist es bereits für Firebase registriert und konfiguriert.

    • Wenn Sie kein Unity-Projekt haben, können Sie eine Beispiel-App herunterladen.

  • Fügen Sie Ihrem Unity-Projekt das Firebase Unity SDK (insbesondere FirebaseRemoteConfig.unitypackage) hinzu.

Das Hinzufügen von Firebase zu Ihrem Unity-Projekt umfasst Aufgaben sowohl in der Firebase Console als auch in Ihrem geöffneten Unity-Projekt. Sie laden beispielsweise Firebase-Konfigurationsdateien aus der Console herunter und verschieben sie dann in Ihr Unity-Projekt.

Schritt 2: In-App-Standardparameterwerte festlegen

Sie können im Remote Config-Objekt In-App-Standardparameterwerte festlegen, damit sich Ihre App wie vorgesehen verhält, bevor eine Verbindung zum Remote Config-Backend hergestellt wird. Außerdem sind dann Standardwerte verfügbar, falls im Backend keine festgelegt sind.

Erstellen Sie dazu ein String-Wörterbuch und füllen Sie es mit Schlüssel/Wert-Paaren aus, die die gewünschten Standardwerte darstellen. Wenn Sie bereits Remote Config-Backendparameterwerte konfiguriert haben, können Sie eine Datei mit diesen Schlüssel/Wert-Paaren herunterladen und damit Ihr String-Wörterbuch erstellen. Weitere Informationen finden Sie unter Remote Config-Standardvorlagen herunterladen.

Nicht-String-Properties werden beim Aufruf von SetDefaultsAsync() in den Typ der Property umgewandelt.

System.Collections.Generic.Dictionary<string, object> defaults =
  new System.Collections.Generic.Dictionary<string, object>();

// These are the values that are used if we haven't fetched data from the
// server
// yet, or if we ask for values that the server doesn't have:
defaults.Add("config_test_string", "default local string");
defaults.Add("config_test_int", 1);
defaults.Add("config_test_float", 1.0);
defaults.Add("config_test_bool", false);

Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(defaults)
  .ContinueWithOnMainThread(task => {

Schritt 3: Parameterwerte für die Verwendung in Ihrer App abrufen

Sie können jetzt Parameterwerte aus dem Remote Config-Objekt abrufen. Wenn Sie Werte im Remote Config-Backend festgelegt, abgerufen und dann aktiviert haben, sind diese Werte für Ihre App verfügbar. Andernfalls werden die In-App-Parameterwerte zurückgegeben, die mit SetDefaultsAsync() konfiguriert wurden.

Verwenden Sie GetValue(), um diese Werte abzurufen, und geben Sie den Parameterschlüssel als Argument an. Dies gibt ein ConfigValue zurück, das Eigenschaften zum Konvertieren des Werts in verschiedene Basistypen hat.

Schritt 4: Parameterwerte festlegen

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

Schritt 5: Werte nach Bedarf abrufen und aktivieren

Wenn du Parameterwerte aus dem Remote Config-Backend abrufen möchtest, rufe die Methode FetchAsync() auf. Alle Werte, die Sie im Backend festlegen, werden abgerufen und im Remote Config-Objekt im Cache gespeichert.

// Start a fetch request.
// FetchAsync only fetches new data if the current data is older than the provided
// timespan.  Otherwise it assumes the data is "recent enough", and does nothing.
// By default the timespan is 12 hours, and for production apps, this is a good
// number. For this example though, it's set to a timespan of zero, so that
// changes in the console will always show up immediately.
public Task FetchDataAsync() {
  DebugLog("Fetching data...");
  System.Threading.Tasks.Task fetchTask =
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.FetchAsync(
      TimeSpan.Zero);
  return fetchTask.ContinueWithOnMainThread(FetchComplete);
}

Im obigen Code ist FetchComplete eine Methode, deren Signatur mit den Parametern einer der Überladungen von ContinueWithOnMainThread() übereinstimmt.

Im folgenden Beispielcode wird der Methode FetchComplete die vorherige Aufgabe (fetchTask) übergeben, damit FetchComplete feststellen kann, ob sie abgeschlossen ist. Im Code wird dann mit Info.LastFetchStatus ermittelt, ob der Abschluss auch erfolgreich war. In diesem Fall werden Remote Config-Parameterwerte dann mit ActivateAsync() aktiviert.

private void FetchComplete(Task fetchTask) {
  if (!fetchTask.IsCompleted) {
    Debug.LogError("Retrieval hasn't finished.");
    return;
  }

  var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
  var info = remoteConfig.Info;
  if(info.LastFetchStatus != LastFetchStatus.Success) {
    Debug.LogError($"{nameof(FetchComplete)} was unsuccessful\n{nameof(info.LastFetchStatus)}: {info.LastFetchStatus}");
    return;
  }

  // Fetch successful. Parameter values must be activated to use.
  remoteConfig.ActivateAsync()
    .ContinueWithOnMainThread(
      task => {
        Debug.Log($"Remote data loaded and ready for use. Last fetch time {info.FetchTime}.");
    });
}

Werte, die mit FetchAsync() abgerufen werden, werden nach Abschluss des Abrufs lokal im Cache gespeichert, aber erst verfügbar gemacht, wenn ActivateAsync() aufgerufen wird. So können Sie dafür sorgen, dass die neuen Werte nicht während der Berechnung oder zu anderen Zeiten angewendet werden, die zu Problemen oder ungewöhnlichem Verhalten führen könnten.

Schritt 6: Auf Echtzeit-Updates achten

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 Sie eine neue Remote Config-Version veröffentlicht haben.

Echtzeitaktualisierungen werden vom Firebase Unity SDK ab Version 11.0.0 und höher für Android- und Apple-Plattformen unterstützt.

  1. Fügen Sie Ihrer App einen OnConfigUpdateListener hinzu, um nach Updates zu suchen und neue oder aktualisierte Parameterwerte automatisch abzurufen. Erstellen Sie dann eine ConfigUpdateListenerEventHandler, um Aktualisierungsereignisse zu verarbeiten. Im folgenden Beispiel wird auf Aktualisierungen gewartet und die neu abgerufenen Werte werden verwendet, um eine aktualisierte Begrüßungsnachricht anzuzeigen.
// Invoke the listener.
void Start()
{
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener
    += ConfigUpdateListenerEventHandler;
}

// Handle real-time Remote Config events.
void ConfigUpdateListenerEventHandler(
   object sender, Firebase.RemoteConfig.ConfigUpdateEventArgs args) {
  if (args.Error != Firebase.RemoteConfig.RemoteConfigError.None) {
    Debug.Log(String.Format("Error occurred while listening: {0}", args.Error));
    return;
  }

  Debug.Log("Updated keys: " + string.Join(", ", args.UpdatedKeys));
  // Activate all fetched values and then display a welcome message.
  remoteConfig.ActivateAsync().ContinueWithOnMainThread(
    task => {
        DisplayWelcomeMessage();
    });
}

// Stop the listener.
void OnDestroy() {
    Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener
      -= ConfigUpdateListenerEventHandler;
}

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, den Abschluss-Handler auf.

Nächste Schritte

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