Puoi utilizzare Firebase Remote Config per definire i parametri nella tua app e aggiornarne i valori nel cloud, consentendoti di modificare l'aspetto e il comportamento della tua app senza distribuire un aggiornamento.
La libreria Remote Config viene utilizzata per archiviare i valori parametro predefiniti in-app, recuperare i valori parametro aggiornati dal backend Remote Config e controllare quando i valori recuperati vengono resi disponibili per l'app. Per saperne di più, consulta Strategie di caricamento di Remote Config.
Questa guida ti illustra i passaggi per iniziare e fornisce alcuni codici campione, tutti disponibili per la clonazione o il download dal repository GitHub firebase/quickstart-unity.
Passaggio 1: aggiungi Remote Config alla tua app
Prima di poter utilizzare Remote Config, devi:
Registra il tuo progetto Unity e configuralo in modo che utilizzi Firebase.
Se il tuo progetto Unity utilizza già Firebase, è già registrato e configurato per Firebase.
Se non hai un progetto Unity, puoi scaricare un'app di esempio.
Aggiungi l'SDK Firebase Unity (in particolare,
FirebaseRemoteConfig.unitypackage
) al tuo progetto Unity.
Tieni presente che l'aggiunta di Firebase al tuo progetto Unity comporta attività sia nella Firebase console sia nel progetto Unity aperto (ad esempio, scarichi i file di configurazione Firebase dalla console, poi li sposti nel progetto Unity).
Passaggio 2: imposta i valori predefiniti dei parametri in-app
Puoi impostare i valori dei parametri predefiniti in-app nell'oggetto Remote Config, in modo che la tua app si comporti come previsto prima di connettersi al backend Remote Config e in modo che i valori predefiniti siano disponibili se non sono impostati nel backend.
Per farlo, crea un dizionario di stringhe e compilalo con coppie chiave/valore che rappresentano i valori predefiniti da aggiungere. Se hai già configurato i valori dei parametri di backend Remote Config, puoi scaricare un file che contiene queste coppie chiave/valore e utilizzarlo per creare il dizionario di stringhe. Per saperne di più, consulta Scarica i valori predefiniti del modello Remote Config.
(Le proprietà non stringa verranno
convertite nel tipo della proprietà quando viene chiamato SetDefaultsAsync()
).
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 => {
Passaggio 3: ottieni i valori dei parametri da utilizzare nell'app
Ora puoi ottenere i valori dei parametri dall'oggetto Remote Config. Se imposti
i valori nel backend Remote Config, li recuperi e li attivi,
questi valori sono disponibili per la tua app. In caso contrario, ottieni i valori parametro in-app
configurati utilizzando
SetDefaultsAsync()
.
Per ottenere questi valori, utilizza GetValue()
,
fornendo la chiave del parametro come argomento. Viene restituito un
ConfigValue
,
che ha proprietà per convertire il valore in vari tipi di base.
Passaggio 4: imposta i valori dei parametri
- Nella console Firebase, apri il tuo progetto.
- Seleziona Remote Config dal menu per visualizzare la dashboard Remote Config.
- Definisci i parametri con gli stessi nomi di quelli definiti nella tua app. Per ogni parametro, puoi impostare un valore predefinito (che alla fine sostituirà il valore predefinito in-app) e valori condizionali. Per saperne di più, consulta parametri e condizioni di Remote Config.
Passaggio 5: recupera e attiva i valori (se necessario)
Per recuperare i valori dei parametri dal backend Remote Config, chiama il metodo
FetchAsync()
. Tutti i valori impostati nel backend vengono recuperati e
memorizzati nella cache nell'oggetto Remote Config.
// 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); }
Nel codice precedente, FetchComplete
è un metodo la cui firma corrisponde ai parametri di uno degli overload di ContinueWithOnMainThread()
.
Nel codice di esempio riportato di seguito, al metodo FetchComplete
viene passata l'attività precedente
(fetchTask
), che consente a FetchComplete
di determinare se è stata completata.
Il codice utilizza
Info.LastFetchStatus
per determinare se anche l'arrivo è riuscito. In questo caso,
i valori dei parametri Remote Config vengono attivati utilizzando ActivateAsync()
.
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}.");
});
}
I valori recuperati utilizzando
FetchAsync()
vengono memorizzati nella cache locale al termine del recupero, ma non sono disponibili finché non viene richiamato
ActivateAsync()
. In questo modo puoi assicurarti che i nuovi valori non vengano applicati
a metà calcolo o in altri momenti che potrebbero causare problemi o
comportamenti strani.
Passaggio 6: ascolta gli aggiornamenti in tempo reale
Dopo aver recuperato i valori dei parametri, puoi utilizzare Remote Config in tempo reale per ascoltare gli aggiornamenti dal backend Remote Config. Remote Config in tempo reale ai dispositivi connessi quando sono disponibili aggiornamenti e recupera automaticamente le modifiche dopo la pubblicazione di una nuova versione di Remote Config.
Gli aggiornamenti in tempo reale sono supportati dall'SDK Firebase Unity versione 11.0.0 e successive per le piattaforme Android e Apple.
- Nella tua app, aggiungi un
OnConfigUpdateListener
per iniziare ad ascoltare gli aggiornamenti e recuperare automaticamente i valori dei parametri nuovi o aggiornati. Poi crea unConfigUpdateListenerEventHandler
per elaborare gli eventi di aggiornamento. L'esempio seguente è in attesa di aggiornamenti e utilizza i valori appena recuperati per visualizzare un messaggio di benvenuto aggiornato.
// 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; }
La volta successiva che pubblichi una nuova versione di Remote Config, i dispositivi che eseguono la tua app e sono in ascolto delle modifiche chiameranno l'handler di completamento.
Passaggi successivi
Se non l'hai ancora fatto, esplora i Remote Config casi d'uso e dai un'occhiata ad alcuni dei concetti chiave e alla documentazione sulle strategie avanzate, tra cui: