Inizia a utilizzare Firebase Remote Config


Puoi utilizzare Firebase Remote Config per definire i parametri nella tua app e aggiornarne i valori nel cloud, in modo da modificare l'aspetto e il comportamento dell'app senza distribuire un aggiornamento.

La libreria Remote Config viene utilizzata per archiviare i valori parametro predefiniti in-app, recupera i valori dei parametri aggiornati dal backend Remote Config e dal controllo quando i valori recuperati vengono resi disponibili per la tua app. Per saperne di più, consulta le strategie di caricamento di Remote Config.

Questa guida illustra i passaggi per iniziare e fornisce del codice di esempio, che è possibile clonare o scaricare 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 progetto Unity comporta attività sia nel Nella console Firebase e nel progetto Unity aperto Ad esempio, scarichi dalla console i file di configurazione di Firebase, quindi li sposti nel tuo progetto Unity).

Passaggio 2: imposta i valori dei parametri predefiniti in-app

Puoi impostare i valori parametro predefiniti in-app nell'Remote Config in modo che l'app si comporti come previsto prima di connettersi backend Remote Config e in modo che siano disponibili valori predefiniti se non lo sono 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 Remote Config valori dei parametri di backend, puoi scaricare un file che contiene queste coppie chiave/valore e la utilizza per costruire il tuo dizionario di stringhe. Per ulteriori informazioni, vedi Scarica Valori predefiniti per Remote Config modello.

Le proprietà diverse da stringa verranno conversite al 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: recupera i valori dei parametri da utilizzare nell'app

Ora puoi ottenere i valori dei parametri dall'oggetto Remote Config. Se hai impostato i valori nel backend Remote Config, li hai recuperati e poi li hai attivati, 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. Questo restituisce un ConfigValue, che ha proprietà per convertire il valore in vari tipi di base.

Passaggio 4: imposta i valori dei parametri

  1. Nella console Firebase, apri il tuo progetto.
  2. Seleziona Remote Config dal menu per visualizzare la dashboard Remote Config.
  3. Definisci i parametri con gli stessi nomi di quelli definiti in la tua app. Per ogni parametro puoi impostare un valore predefinito (che alla fine sostituiscono il valore predefinito in-app) e i valori condizionali. Per saperne di più, consulta i parametri e le 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 sul 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 riportato sopra, FetchComplete è un metodo la cui firma corrisponde alla parametri di uno dei sovraccarichi 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 il traguardo è stato anch'esso riuscito. Se sì, I valori parametro Remote Config vengono quindi 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}.");
    });
}

Valori recuperati con FetchAsync() vengono memorizzate nella cache localmente al completamento del recupero, ma non vengono rese disponibili ActivateAsync() viene richiamato. In questo modo puoi assicurarti che i nuovi valori non vengano applicati durante il 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 monitorare gli aggiornamenti dal backend Remote Config. In tempo reale Remote Config segnala ai dispositivi connessi quando sono disponibili aggiornamenti e recupera automaticamente le modifiche dopo la pubblicazione di un nuovo Remote Config completamente gestita.

Gli aggiornamenti in tempo reale sono supportati dall'SDK Firebase Unity 11.0.0 e versioni successive per Piattaforme Android e Apple.

  1. Nell'app, aggiungi un OnConfigUpdateListener per iniziare ad ascoltare gli aggiornamenti e recuperano automaticamente tutti i valori parametro nuovi o aggiornati. Quindi, crea un'istanza ConfigUpdateListenerEventHandler per elaborare gli eventi di aggiornamento. Le seguenti esempio rileva gli 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 prossima volta che pubblicherai una nuova versione del tuo Remote Config, i dispositivi che stai eseguendo la tua app e, ascoltando le modifiche, chiamerà il gestore del completamento.

Passaggi successivi

Se non l'hai ancora fatto, esplora il Remote Config casi d'uso e dare un'occhiata ad alcuni dei sulla documentazione sui concetti chiave e sulle strategie avanzate, tra cui: