Inizia con Firebase Remote Config


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 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 alla tua app. Per ulteriori informazioni, consulta Strategie di caricamento di Remote Config .

Questa guida ti guida attraverso i passaggi per iniziare e fornisce del codice di esempio, il tutto disponibile per essere clonato o scaricato dal repository GitHub firebase/quickstart-unity .

Passaggio 1: aggiungi Remote Config alla tua app

Prima di poter utilizzare Remote Config , è necessario:

  • Registra il tuo progetto Unity e configuralo per utilizzare Firebase.

    • Se il tuo progetto Unity utilizza già Firebase, significa che è già registrato e configurato per Firebase.

    • Se non disponi di 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 console Firebase che nel tuo progetto Unity aperto (ad esempio, scarichi i file di configurazione di Firebase dalla console, quindi li sposti nel tuo progetto Unity).

Passaggio 2: imposta i valori dei parametri predefiniti 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 ne sono impostati nessuno nel backend.

A tale scopo, crea un dizionario di stringhe e popolalo con coppie chiave/valore che rappresentano le impostazioni predefinite che desideri aggiungere. Se hai già configurato i valori dei parametri backend di Remote Config, puoi scaricare un file che contiene queste coppie chiave/valore e utilizzarlo per costruire il tuo dizionario di stringhe. Per ulteriori informazioni, consulta Scaricare le impostazioni predefinite 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 nella tua app

Ora puoi ottenere i valori dei parametri dall'oggetto Remote Config. Se imposti valori nel backend Remote Config, li recuperi e quindi li attivi, tali valori saranno disponibili per la tua app. In caso contrario, ottieni i valori dei parametri in-app configurati utilizzando SetDefaultsAsync() .

Per ottenere questi valori, utilizzare GetValue() , fornendo la chiave del parametro come argomento. Ciò restituisce un ConfigValue , che dispone di proprietà per convertire il valore in vari tipi di base.

Passaggio 4: impostare i valori dei parametri

  1. Nella console Firebase , apri il tuo progetto.
  2. Selezionare Remote Config dal menu per visualizzare il dashboard Remote Config.
  3. Definisci i parametri con gli stessi nomi dei parametri che hai definito nella tua app. Per ogni parametro, puoi impostare un valore predefinito (che eventualmente sovrascriverà il valore predefinito in-app) e valori condizionali. Per ulteriori informazioni, consulta Parametri e condizioni di Remote Config .

Passaggio 5: recupera e attiva i valori (secondo necessità)

Per recuperare i valori dei parametri dal backend Remote Config, chiamare 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 precedente, FetchComplete è un metodo la cui firma corrisponde ai parametri di uno degli sovraccarichi di ContinueWithOnMainThread() .

Nel codice di esempio riportato di seguito, al metodo FetchComplete viene passata l'attività precedente ( fetchTask ), che consente FetchComplete di determinare se è stata completata. Il codice usa Info.LastFetchStatus per determinare se anche il completamento ha avuto esito positivo. In tal caso, i valori dei parametri 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}.");
    });
}

I valori recuperati utilizzando FetchAsync() vengono memorizzati nella cache locale al termine del recupero, ma non vengono resi disponibili finché non viene richiamato ActivateAsync() . Ciò consente di garantire 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 ascoltare gli aggiornamenti dal backend Remote Config. Remote Config in tempo reale segnala ai dispositivi collegati quando sono disponibili aggiornamenti e recupera automaticamente le modifiche dopo aver pubblicato una nuova versione di Remote Config.

Gli aggiornamenti in tempo reale sono supportati da Firebase Unity SDK v11.0.0+ e versioni successive per piattaforme Android e Apple.

  1. Nella tua app, aggiungi un OnConfigUpdateListener per iniziare ad ascoltare gli aggiornamenti e recuperare automaticamente tutti i valori dei parametri nuovi o aggiornati. Quindi, 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 di Remote Config, i dispositivi che eseguono la tua app e sono in ascolto delle modifiche chiameranno il gestore del completamento.

Prossimi passi

Se non l'hai già fatto, esplora i casi d'uso di configurazione remota e dai un'occhiata ad alcuni dei concetti chiave e alla documentazione di strategie avanzate, tra cui: