Erste Schritte mit Remote Config in Unity

Plattform auswählen : iOS+ Android Web Flutter Unity C++


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 zu verteilen.

Die Remote Config Bibliothek wird verwendet, um Standardparameterwerte in der App zu speichern, aktualisierte Parameterwerte aus dem Remote Config Backend abzurufen und zu steuern, 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 Beispiel code bereitgestellt, der aus dem GitHub-Repository firebase/quickstart-unity geklont oder heruntergeladen werden kann.

Schritt 1: Remote Config zu Ihrer 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 Ihr Unity-Projekt bereits Firebase verwendet, ist es bereits registriert und für Firebase konfiguriert.

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

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

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

Schritt 2: Standardparameterwerte in der App festlegen

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

Erstellen Sie dazu ein String-Wörterbuch 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 herunterladen, die diese Schlüssel/Wert-Paare enthält, und damit Ihr String-Wörterbuch erstellen. Weitere Informationen finden Sie unter Standardwerte für Remote Config Vorlagen herunterladen.

Nicht-String-Properties werden in den Typ der Property konvertiert, wenn SetDefaultsAsync() aufgerufen wird.

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 zur Verwendung in Ihrer App abrufen

Jetzt können Sie 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 erhalten Sie die Parameter Werte in der App, die mit SetDefaultsAsync() konfiguriert wurden.

Verwenden Sie GetValue(), um diese Werte abzurufen, und geben Sie den Parameterschlüssel als Argument an. Dadurch wird ein ConfigValue, zurückgegeben, das Properties enthält, um den Wert in verschiedene Basistypen zu konvertieren.

Schritt 4: Parameterwerte festlegen

  1. Öffnen Sie in der Firebase Konsole 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 Parameter, die Sie in Ihrer App definiert haben. Für jeden Parameter können Sie einen Standardwert (der den Standardwert in der App überschreibt) und bedingte Werte festlegen. Weitere Informationen finden Sie unter Remote Config Parameter und Bedingungen.

Schritt 5: Werte abrufen und aktivieren (falls erforderlich)

Rufen Sie die FetchAsync() Methode auf, um Parameterwerte aus dem Remote Config Backend abzurufen. 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 vorherigen Code ist FetchComplete eine Methode, deren Signatur mit den Parametern einer der Überladungen von ContinueWithOnMainThread() übereinstimmt.

Im folgenden Beispielcode wird die vorherige Aufgabe (fetchTask) an die Methode FetchComplete übergeben, damit FetchComplete feststellen kann, ob sie abgeschlossen wurde. Der Code verwendet Info.LastFetchStatus , um dann zu ermitteln, ob der Abschluss auch erfolgreich war. Wenn ja, werden die Remote Config Parameterwerte 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}.");
    });
}

Mit FetchAsync() abgerufene Werte werden nach Abschluss des Abrufs lokal im Cache gespeichert, sind aber erst verfügbar, wenn ActivateAsync() aufgerufen wird. So können Sie sicherstellen, dass die neuen Werte nicht mitten in einer Berechnung oder zu anderen Zeiten angewendet werden, die zu Problemen oder seltsamem Verhalten führen könnten.

Schritt 6: In Echtzeit auf Updates warten

Nachdem Sie Parameterwerte abgerufen haben, können Sie mit Remote Config in Echtzeit auf Updates aus dem Remote Config-Backend warten.Remote ConfigRemote Config Echtzeit Remote Config signalisiert verbundenen 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 Unity SDK ab Version 11.0.0 für Android- und Apple-Plattformen unterstützt.

  1. Fügen Sie in Ihrer App einen OnConfigUpdateListener hinzu, um auf Updates zu warten und alle neuen oder aktualisierten Parameterwerte automatisch abzurufen. Erstellen Sie dann einen ConfigUpdateListenerEventHandler, um Update-Ereignisse zu verarbeiten. Im folgenden Beispiel wird auf Updates 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, rufen Geräte, auf denen Ihre App ausgeführt wird und die auf Änderungen warten, den Completion-Handler auf.