Inizia a utilizzare Remote Config su Unity

Seleziona la piattaforma: iOS+ Android Web Flutter Unity C++


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 dell'app senza distribuire un aggiornamento dell'app.

La libreria Remote Config viene utilizzata per archiviare i valori dei parametri predefiniti in-app, recuperare i valori dei parametri 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 illustra i passaggi per iniziare e fornisce alcuni esempi di codice, 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:

  • Registrare il progetto Unity e configurarlo per l'utilizzo di 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.

  • Aggiungere l'Firebase Unity SDK (in particolare, FirebaseRemoteConfig.unitypackage) al 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, quindi sposti i file nel progetto Unity).

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

Puoi impostare i valori dei parametri predefiniti in-app nell'Remote Config oggetto, in modo che l'app si comporti come previsto prima di connettersi al Remote Config backend e che i valori predefiniti siano disponibili se non ne sono impostati nel backend.

Per farlo, crea un dizionario di stringhe e compilalo con coppie chiave-valore che rappresentano i valori predefiniti che vuoi aggiungere. Se hai già configurato Remote Config i valori dei parametri del backend, puoi scaricare un file che contiene queste coppie chiave-valore e utilizzarlo per creare il dizionario di stringhe. Per saperne di più, consulta Scarica Remote Config i valori predefiniti del modello.

(Le proprietà non stringa verranno convertite nel tipo di 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 recuperare 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 dei parametri 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

  1. Nella Firebase console, apri il progetto.
  2. Seleziona Remote Config dal menu per visualizzare la Remote Config dashboard.
  3. Definisci i parametri con gli stessi nomi dei parametri definiti nell'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 Remote Config parametri e condizioni.

Passaggio 5: recupera e attiva i valori (se necessario)

Per recuperare i valori dei parametri dal backend Remote Config, chiama il FetchAsync() metodo. Tutti i valori impostati nel backend vengono recuperati e memorizzati nella cache nell' Remote Config oggetto.

// 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 campione 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 completamento è anche riuscito. In caso affermativo, Remote Config i valori dei parametri 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 localmente al termine del recupero, ma non vengono resi disponibili finché non viene richiamato ActivateAsync(). 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 per ascoltare gli aggiornamenti dal backend Remote Config. Real-time Remote Config segnala ai dispositivi connessi quando sono disponibili aggiornamenti e recupera automaticamente le modifiche dopo aver pubblicato una nuova Remote Config versione.

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

  1. Nella tua app, aggiungi un OnConfigUpdateListener per iniziare ad ascoltare gli aggiornamenti e recuperare automaticamente i valori dei parametri nuovi o aggiornati. Poi, crea un ConfigUpdateListenerEventHandler per elaborare gli eventi di aggiornamento. L'esempio seguente ascolta 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 pubblichi una nuova versione del tuo Remote Config, i dispositivi che eseguono la tua app e ascoltano le modifiche chiameranno il gestore di completamento.