了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

Inizia con la configurazione remota di Firebase


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 back-end Remote Config e controllare quando i valori recuperati vengono resi disponibili per la tua app. Per ulteriori informazioni, 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 , è necessario:

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

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

    • Se non hai un progetto Unity, puoi scaricare un'app di esempio .

  • Aggiungi Firebase Unity SDK (in particolare, FirebaseRemoteConfig.unitypackage ) al tuo progetto Unity.

Tieni presente che l'aggiunta di Firebase al progetto Unity comporta attività sia nella console Firebase che nel progetto Unity aperto (ad esempio, scarichi i file di configurazione di Firebase dalla console, quindi li sposti nel 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 back-end Remote Config e in modo che i valori predefiniti siano disponibili se nessuno è impostato nel back-end.

Per fare ciò, crea un dizionario di stringhe e popolalo con coppie chiave/valore che rappresentano i valori predefiniti che desideri aggiungere. Se hai già configurato i valori dei parametri back-end 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 Download delle 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 i valori nel back-end Remote Config, li recuperi e li attivi, tali valori sono 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. Questo restituisce un ConfigValue , che ha proprietà per convertire il valore in vari tipi di base.

Passaggio 4: collega la tua app alla console Firebase

Nella console Firebase , aggiungi la tua app al tuo progetto Firebase.

Passaggio 5: impostare i valori dei parametri

  1. Nella console Firebase , apri il tuo progetto.
  2. Seleziona Remote Config dal menu per visualizzare la dashboard di 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 alla fine sovrascriverà il valore predefinito in-app) e valori condizionali. Per ulteriori informazioni, consulta Parametri e condizioni di Remote Config .

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

Per recuperare i valori dei parametri dal back-end Remote Config, chiama il metodo [ FetchAsync() ][fetch]. Tutti i valori impostati sul back-end 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 seguente, 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 la finitura 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 tramite [ FetchAsync() ][fetch] vengono memorizzati nella cache in 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 7: 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 back-end di Remote Config. Remote Config in tempo reale segnala 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 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 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 nuovi valori 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 ascoltano le modifiche chiameranno il gestore di completamento.

Prossimi passi

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