Mit Firebase Remote Config können Sie Parameter in Ihrer App definieren und aktualisieren ihre Werte in der Cloud, sodass Sie das Erscheinungsbild deiner App, ohne ein App-Update zu veröffentlichen.
Die Bibliothek Remote Config wird zum Speichern von In-App-Standardparameterwerten verwendet. aktualisierte Parameterwerte vom Remote Config-Back-End abrufen und steuern wann abgerufene Werte für Ihre App verfügbar gemacht werden. Weitere Informationen Siehe Remote Config-Ladestrategien.
In diesem Leitfaden erfahren Sie, die ersten Schritte durch und enthält Beispielcode. zum Klonen oder Herunterladen aus dem firebase/quickstart-unity-GitHub-Repository.
Schritt 1: Remote Config zur App hinzufügen
Vor der Verwendung Remote Config, sind folgende Schritte erforderlich:
Registrieren Sie Ihr Unity-Projekt und konfigurieren Sie es für die Verwendung von Firebase.
Wenn Ihr Unity-Projekt bereits Firebase verwendet, registriert und für Firebase konfiguriert.
Wenn Sie kein Unity-Projekt haben, können Sie Beispiel-App.
Fügen Sie das Firebase Unity SDK (insbesondere
FirebaseRemoteConfig.unitypackage
) hinzu: Ihr Unity-Projekt.
Beachten Sie, dass das Hinzufügen von Firebase zu Ihrem Unity-Projekt sowohl Aufgaben im Firebase-Konsole und im geöffneten Unity-Projekt (Beispiel: Sie laden Firebase-Konfigurationsdateien aus der Console herunter und in Ihr Unity-Projekt importieren.
Schritt 2: In-App-Standardparameterwerte festlegen
Du kannst In-App-Standardparameterwerte in der Remote Config festlegen -Objekt, damit sich Ihre App wie beabsichtigt verhält, bevor sie eine Verbindung zum Remote Config-Back-End, sodass Standardwerte verfügbar sind, falls keine verfügbar sind. Back-End festgelegt werden.
Erstellen Sie dazu ein Stringwörterbuch und füllen Sie es mit Schlüssel/Wert-Paaren für die Standardeinstellungen, die Sie hinzufügen möchten. 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 Herunterladen Remote Config-Standardvorlagen.
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 zur Verwendung in Ihrer App abrufen
Jetzt können Sie Parameterwerte aus dem Remote Config-Objekt abrufen. Wenn Sie
Werte im Remote Config-Back-End, abgerufen und dann aktiviert
sind diese Werte für Ihre App verfügbar. Andernfalls wird der In-App-Parameter
Werte konfiguriert mit
SetDefaultsAsync()
Diese Werte rufen Sie mit GetValue()
ab.
mit dem Parameterschlüssel als Argument. Dadurch wird ein
ConfigValue
,
mit Eigenschaften, mit denen der Wert in verschiedene Basistypen konvertiert wird.
Schritt 4: Parameterwerte festlegen
- Öffnen Sie Ihr Projekt in der Firebase-Konsole.
- Wählen Sie im Menü Remote Config aus, um das Remote Config-Dashboard aufzurufen.
- Definieren Sie Parameter mit denselben Namen wie die Parameter, die Sie in für Ihre App. Für jeden Parameter können Sie einen Standardwert festlegen, der den Standardwert in der App) und bedingte Werte überschreiben. Weitere Informationen finden Sie unter Remote Config-Parameter und -Bedingungen.
Schritt 5: Werte abrufen und aktivieren (nach Bedarf)
Rufen Sie zum Abrufen von Parameterwerten aus dem Remote Config-Backend die Methode
FetchAsync()
. Alle Werte, die Sie im Back-End 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 obigen Code ist FetchComplete
eine Methode, deren Signatur mit dem
eines der Parameter
Überlastungen
von ContinueWithOnMainThread()
.
Im Beispielcode unten wird der Methode FetchComplete
die vorherige Aufgabe übergeben.
(fetchTask
), sodass FetchComplete
feststellen kann, ob der Vorgang abgeschlossen wurde.
Der Code verwendet
Info.LastFetchStatus
um festzustellen, ob der Abschluss auch erfolgreich war. Wenn ja,
Die Remote Config-Parameterwerte werden 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 mithilfe von
FetchAsync()
werden nach Abschluss des Abrufs lokal im Cache gespeichert, sind aber erst verfügbar,
ActivateAsync()
aufgerufen wird. So sorgen Sie dafür, dass die neuen Werte
oder zu anderen Zeiten, die Probleme oder seltsame
verhalten.
Schritt 6: In Echtzeit auf Updates warten
Nachdem Sie Parameterwerte abgerufen haben, können Sie Remote Config in Echtzeit verwenden, um Warten auf Aktualisierungen vom Remote Config-Back-End. Echtzeit Remote Config signalisiert verbundenen Geräten, wenn Updates verfügbar sind und ruft die Änderungen nach der Veröffentlichung eines neuen Remote Config automatisch ab Version.
Echtzeitaktualisierungen werden vom Firebase Unity SDK ab Version 11.0.0 und höher für Android- und Apple-Plattformen unterstützt.
- Füge deiner App eine
OnConfigUpdateListener
hinzu, um auf Updates zu warten und ruft automatisch alle neuen oder aktualisierten Parameterwerte ab. Erstellen Sie dannConfigUpdateListenerEventHandler
, um Update-Ereignisse zu verarbeiten. Die folgenden Beispiel überwacht Aktualisierungen und verwendet die neu abgerufenen Werte, eine aktualisierte Willkommensnachricht.
// 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 an, falls Sie dies noch nicht getan haben Anwendungsfälle und sehen uns einige der Schlüsselkonzepte und Dokumentation zu erweiterten Strategien, einschließlich: