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 die Darstellung und das Verhalten Ihrer App ändern, ohne ein App-Update zu verteilen.

Mit der Remote Config-Bibliothek werden Standardparameterwerte in der App 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 beschrieben und Beispielcode bereitgestellt, der aus dem GitHub-Repository firebase/quickstart-unity geklont oder heruntergeladen werden kann.

Schritt 1: Remote Config in Ihre App einfü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 Ihr Unity-Projekt bereits Firebase verwendet, 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 Standardparameterwerte für In-App-Konfigurationen im Remote Config-Objekt festlegen, damit sich Ihre App wie vorgesehen verhält, bevor sie eine Verbindung zum Remote Config-Backend herstellt. Außerdem sind so Standardwerte verfügbar, wenn im Backend keine festgelegt sind.

Erstellen Sie dazu ein String-Dictionary und füllen Sie es mit Schlüssel/Wert-Paaren, die die Standardwerte darstellen, die Sie hinzufügen möchten. Wenn Sie bereits Remote Config-Backend-Parameterwerte konfiguriert haben, können Sie eine Datei mit diesen Schlüssel/Wert-Paaren herunterladen und damit Ihr String-Dictionary erstellen. Weitere Informationen finden Sie unter Standardvorlagen für Remote Config herunterladen.

Nicht stringbasierte Properties werden beim Aufruf von SetDefaultsAsync() in den Typ der Property konvertiert.

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 Ihre App abrufen

Sie können jetzt Parameterwerte aus dem Remote Config-Objekt abrufen. Wenn Sie Werte im Remote Config-Backend festlegen, abrufen und dann aktivieren, sind diese Werte für Ihre App verfügbar. Andernfalls erhalten Sie die In-App-Parameterwerte, die mit SetDefaultsAsync() konfiguriert wurden.

Verwenden Sie GetValue(), um diese Werte abzurufen. Geben Sie dazu den Parameterschlüssel als Argument an. Dadurch wird ein ConfigValue zurückgegeben, das Eigenschaften zum Konvertieren des Werts in verschiedene Basistypen enthält.

Schritt 4: Parameterwerte festlegen

  1. Öffnen Sie Ihr Projekt in der Firebase-Konsole.
  2. Wählen Sie im Menü Remote Config aus, um das Remote Config-Dashboard aufzurufen.
  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 (der den In-App-Standardwert überschreibt) und bedingte Werte festlegen. Weitere Informationen finden Sie unter Remote Config-Parameter und ‑Bedingungen.

Schritt 5: Werte abrufen und aktivieren (falls erforderlich)

Wenn Sie Parameterwerte aus dem Remote Config-Backend abrufen möchten, rufen Sie die Methode FetchAsync() auf. Alle Werte, die Sie im Backend festlegen, werden abgerufen und im Remote Config-Objekt zwischengespeichert.

// 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 Code oben ist FetchComplete eine Methode, deren Signatur mit den Parametern einer der Überladungen von ContinueWithOnMainThread() übereinstimmt.

Im Beispielcode unten wird der Methode FetchComplete die vorherige Aufgabe (fetchTask) übergeben, damit FetchComplete feststellen kann, ob sie abgeschlossen ist. Im Code wird Info.LastFetchStatus verwendet, um festzustellen, ob der Abschluss auch erfolgreich war. Wenn ja, werden die Parameterwerte für Remote Config 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, sind aber erst verfügbar, 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 Probleme oder ein ungewöhnliches Verhalten verursachen könnten.

Schritt 6: Updates in Echtzeit anhören

Nachdem Sie Parameterwerte abgerufen haben, können Sie mit Echtzeit-Remote Config auf Aktualisierungen vom Remote Config-Backend warten. Remote Config-Signale in Echtzeit werden an verbundene Geräte gesendet, wenn Updates verfügbar sind. Die Änderungen werden automatisch abgerufen, nachdem Sie eine neue Remote Config-Version veröffentlicht haben.

Echtzeit-Updates werden vom Firebase Unity SDK v11.0.0+ und höher für Android- und Apple-Plattformen unterstützt.

  1. Fügen Sie in Ihrer App einen OnConfigUpdateListener hinzu, um auf Aktualisierungen zu warten und automatisch neue oder aktualisierte Parameterwerte abzurufen. Erstellen Sie dann einen 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 von Remote Config veröffentlichen, wird der Completion-Handler auf Geräten aufgerufen, auf denen Ihre App ausgeführt wird und die auf Änderungen warten.

Nächste Schritte

Falls Sie das noch nicht getan haben, sehen Sie sich die Remote Config Anwendungsfälle an und lesen Sie die Dokumentation zu einigen der wichtigsten Konzepte und erweiterten Strategien, darunter: