Modelli di configurazione remota e controllo delle versioni

Il modello Remote Config è il set lato server di parametri e condizioni in formato JSON che hai creato per il tuo progetto Firebase. Puoi modificare e gestire il modello utilizzando la console Firebase, che visualizza il contenuto del modello in formato grafico nelle schede Parametri e Condizioni . Puoi anche utilizzare le API di back-end di Remote Config o la CLI di Firebase per modificare e gestire la tua configurazione.

Ecco un esempio di un file modello:

  {
    "conditions": [
      {
        "name": "ios",
        "expression": "device.os == 'ios'"
      }
    ],
    "parameters": {
      "welcome_message": {
        "defaultValue": {
          "value": "Welcome to this sample app"
        },
        "conditionalValues": {
          "ios": {
            "value": "Welcome to this sample iOS app"
          }
        }
      },
      "welcome_message_caps": {
        "defaultValue": {
          "value": "false"
        }
      },
      "header_text": {
        "defaultValue": {
          "useInAppDefault": true
        }
      }
    },
    "version": {
      "versionNumber": "28",
      "updateTime": "2020-05-14T18:39:38.994Z",
      "updateUser": {
        "email": "user@google.com"
      },
      "updateOrigin": "CONSOLE",
      "updateType": "INCREMENTAL_UPDATE"
    }
  }

Ogni volta che si aggiornano i parametri, Remote Config crea un nuovo modello Remote Config con versione e archivia il modello precedente come una versione che è possibile recuperare o ripristinare in base alle esigenze. I numeri di versione vengono incrementati in sequenza dal valore iniziale memorizzato da Remote Config. Tutti i modelli includono un campo version come mostrato, contenente metadati su quella versione specifica.

Con la console Firebase, l'interfaccia a riga di comando di Firebase o le API di back-end Remote Config, puoi eseguire queste attività di gestione della versione:

  • Elenca tutte le versioni del modello memorizzate
  • Recupera una versione specifica
  • Torna a una versione specifica

Quando gestisci i modelli di configurazione remota, tieni presente la soglia di scadenza: il modello di configurazione remota attivo corrente in uso dalla tua app non scade; tuttavia, se viene sostituita da un aggiornamento, la versione precedente verrà conservata solo per 90 giorni, dopodiché scadrà e non potrà essere recuperata. C'è anche un limite totale di 300 versioni memorizzate. Se desideri archiviare o ripristinare un modello al di fuori di tali limiti, salvalo e archivialo manualmente.

Gestisci le versioni dei modelli di configurazione remota

Questa sezione descrive come gestire le versioni del modello di configurazione remota. Per ulteriori dettagli su come creare, modificare e salvare i modelli a livello di codice, vedere Modify Remote Config a livello di codice .

Elenca tutte le versioni archiviate del modello Remote Config

È possibile recuperare un elenco di tutte le versioni archiviate del modello Remote Config. Per esempio:

Node.js

function listAllVersions() {
  admin.remoteConfig().listVersions()
    .then((listVersionsResult) => {
      console.log("Successfully fetched the list of versions");
      listVersionsResult.versions.forEach((version) => {
        console.log('version', JSON.stringify(version));
      });
    })
    .catch((error) => {
      console.log(error);
    });
}

Giava

ListVersionsPage page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
while (page != null) {
  for (Version version : page.getValues()) {
    System.out.println("Version: " + version.getVersionNumber());
  }
  page = page.getNextPage();
}

// Iterate through all versions. This will still retrieve versions in batches.
page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
for (Version version : page.iterateAll()) {
  System.out.println("Version: " + version.getVersionNumber());
}

RIPOSO

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:listVersions

Console Firebase

Nella scheda Parametri , seleziona l'icona "orologio" visualizzata in alto a destra. Si apre la pagina Cronologia modifiche che elenca tutte le versioni del modello memorizzate in un menu elenco a destra.

I dettagli visualizzati per ciascuna versione archiviata includono informazioni sul fatto che le modifiche abbiano avuto origine con la console, con l'API REST, da un rollback o se si trattasse di modifiche incrementali da un salvataggio forzato del modello.

CLI Firebase

firebase remoteconfig:versions:list

Utilizzare l'opzione --limit per limitare il numero di versioni restituite. Passa "0" per recuperare tutte le versioni.

L'elenco dei modelli include i metadati per tutte le versioni archiviate, inclusi l'ora dell'aggiornamento, l'utente che lo ha eseguito e se è stato eseguito tramite la console o l'API REST. Ecco un esempio di un elemento di versione:

{
  "versions": [{
    "version_number": "6",
    "update_time": "2022-05-12T02:38:54Z",
    "update_user": {
      "name": "Jane Smith",
      "email": "jane@developer.org",
      "imageUrl": "https://lh3.googleusercontent.com/a-/..."
    },
    "description": "One small change on the console",
    "origin": "CONSOLE",
    "update_type": "INCREMENTAL_UPDATE"
  }]

Recupera una versione specifica del modello di configurazione remota

È possibile recuperare qualsiasi versione archiviata specifica del modello di configurazione remota. Per esempio:

Node.js

Passa getTemplate() senza alcun argomento per recuperare l'ultima versione del modello o per recuperare una versione specifica, usa getTemplateAtVersion() .

// Get template version: 6
admin.remoteConfig().getTemplateAtVersion('6')
  .then((template) => {
    console.log("Successfully fetched the template with ETag: " + template.etag);
  })
  .catch((error) => {
    console.log(error);
  });

Giava

Template template = FirebaseRemoteConfig.getInstance().getTemplateAtVersionAsync(versionNumber).get();
// See the ETag of the fetched template.
System.out.println("Successfully fetched the template with ETag: " + template.getETag());

RIPOSO

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig?version_number=6

Il parametro URL ?version_number è valido solo per le operazioni GET ; non è possibile utilizzarlo per specificare i numeri di versione per gli aggiornamenti. Una simile richiesta get senza il parametro ?version_number recupererebbe il modello attivo corrente.

Console Firebase

Per impostazione predefinita, il riquadro dei dettagli nella scheda Cronologia modifiche mostra il modello attivo corrente. Per visualizzare i dettagli di un'altra versione nell'elenco, selezionala dal menu a destra.

È possibile visualizzare una differenza dettagliata della versione attualmente selezionata e di qualsiasi altra versione memorizzata passando con il mouse sul menu contestuale per qualsiasi versione non selezionata e selezionando Confronta con la versione selezionata.

CLI Firebase

firebase remoteconfig:get -v VERSION_NUMBER

Facoltativamente, puoi scrivere l'output in un file specificato con -o, FILENAME .

Torna a una versione archiviata specifica del modello di configurazione remota

Puoi tornare a qualsiasi versione memorizzata del modello. Per esempio:

Node.js

// Roll back to template version: 6
admin.remoteConfig().rollback('6')
  .then((template) => {
    console.log("Successfully rolled back to template version 6.");
    console.log("New ETag: " + template.etag);
  })
  .catch((error) => {
    console.log('Error trying to rollback:', e);
  })

Giava

try {
  Template template = FirebaseRemoteConfig.getInstance().rollbackAsync(versionNumber).get();
  System.out.println("Successfully rolled back to template version: " + versionNumber);
  System.out.println("New ETag: " + template.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Error trying to rollback template.");
    System.out.println(rcError.getMessage());
  }
}

RIPOSO

Per eseguire il rollback a un modello di configurazione remota archiviato, emetti un POST HTTP con il metodo personalizzato :rollback e, nel corpo della richiesta, la versione specifica da applicare. Per esempio:

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -H "Content-Type: application/json" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:rollback -d '{"version_number": 6}'

La risposta contiene il contenuto del modello archiviato ora attivo, con i suoi metadati della nuova versione.

Console Firebase

Per le versioni precedenti del modello idonee per il rollback, in alto a destra della pagina Cronologia modifiche viene visualizzato un pulsante di opzione per tornare a quella versione. Fai clic e conferma solo se sei sicuro di voler tornare a quella versione e utilizzare immediatamente quei valori per tutte le app e gli utenti.

CLI Firebase

firebase remoteconfig:rollback -v VERSION_NUMBER

Si noti che questa operazione di rollback crea effettivamente una nuova versione numerata. Ad esempio, il rollback dalla versione 10 alla versione 6 crea effettivamente una nuova copia della versione 6, diversa dall'originale solo per il numero di versione 11. La versione originale 6 è ancora archiviata, supponendo che non abbia raggiunto la sua scadenza, e la versione 11 diventa il modello attivo.

Scarica le impostazioni predefinite del modello di configurazione remota

Poiché l'app potrebbe non essere sempre connessa a Internet, è necessario configurare i valori predefiniti dell'app lato client per tutti i parametri di configurazione remota. È inoltre necessario sincronizzare periodicamente i valori predefiniti del client dell'app e i valori dei parametri predefiniti del back-end di Remote Config, poiché potrebbero cambiare nel tempo.

Come descritto nei collegamenti specifici della piattaforma alla fine di questa sezione, puoi impostare manualmente questi valori predefiniti nella tua app oppure puoi semplificare questo processo scaricando file che contengono solo le coppie chiave-valore per tutti i parametri e i loro valori predefiniti nel modello di configurazione remota attivo. Puoi quindi includere questo file nel tuo progetto e configurare la tua app per importare questi valori.

Puoi scaricare questi file in formato XML per app Android, in formato elenco proprietà (plist) per app iOS e JSON per app Web.

Ti consigliamo di scaricare periodicamente le impostazioni predefinite di Remote Config prima di qualsiasi nuova versione dell'app per assicurarti che l'app e il back-end di Remote Config rimangano sincronizzati.

Per scaricare un file che contiene le impostazioni predefinite del modello:

RIPOSO

curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=file_format'

Usa XML , PLIST o JSON come valore del format , a seconda del formato di file che desideri scaricare.

Console Firebase

  1. Nella scheda Parametri , apri il menu e seleziona Scarica valori predefiniti .
  2. Quando richiesto, fai clic sul pulsante di opzione corrispondente al formato di file che desideri scaricare, quindi fai clic su Scarica file .

Per ulteriori informazioni sull'importazione dei valori predefiniti di Remote Config nell'app, vedere: