Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

Modelli di configurazione remota e versioni

Il modello Remote Config è l'insieme 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 backend di Remote Config o la CLI di Firebase per modificare e gestire la tua configurazione.

Ecco un esempio di 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 memorizza il modello precedente come versione che è possibile recuperare o ripristinare secondo necessità. 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 i metadati su quella specifica versione.

Con la console Firebase, la CLI Firebase o le API di backend di Remote Config, puoi eseguire queste attività di gestione delle versioni:

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

Quando gestisci i modelli di Remote Config, tieni presente la soglia di scadenza: 90 giorni dalla creazione o un limite totale di 300 versioni archiviate. Se desideri archiviare o ripristinare un modello al di fuori di tali limiti, salvalo e archivialo manualmente. L'attuale modello di Remote Config attivo in uso dalla tua app non scade; tuttavia, se è stato attivo per oltre 90 giorni dalla creazione e viene sostituito da un aggiornamento, non può essere recuperato di nuovo (a causa della scadenza).

Gestisci le versioni dei modelli di configurazione remota

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

Elenca tutte le versioni memorizzate del modello Remote Config

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

Nodo.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>:listVersions

Console Firebase

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

I dettagli visualizzati per ogni versione archiviata includono informazioni sull'origine delle modifiche con la console, con l'API REST, da un rollback o se si trattava di modifiche incrementali da un salvataggio forzato del modello.

Firebase CLI

firebase remoteconfig:versions:list

Usa 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, inclusa l'ora dell'aggiornamento, l'utente che l'ha creato e se è stato effettuato tramite la console o l'API REST. Ecco un esempio di un elemento di versione:

{
  "versions": [{
    "version_number": "6",
    "update_time": "2018-05-12T02:38:54Z",
    "update_user": {
      "email": "jane@developer.org",
    },
    "description": "One small change on the console",
    "origin": "CONSOLE",
    "update_type": "INCREMENTAL_UPDATE"
  }]

Recupera una versione specifica del modello Remote Config

È possibile recuperare qualsiasi versione archiviata specifica del modello Remote Config. Per esempio:

Nodo.js

Passa getTemplate() senza argomenti 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</pre>

Il parametro URL ?version_number è valido solo per le operazioni GET ; non è possibile utilizzarlo per specificare i numeri di versione per gli aggiornamenti. Una richiesta get simile 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 archiviata passando con il mouse sul menu di scelta rapida per qualsiasi versione non selezionata e selezionando Confronta con la versione selezionata.

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

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

Eseguire il rollback a una specifica versione archiviata del modello Remote Config

Puoi eseguire il rollback a qualsiasi versione archiviata del modello. Per esempio:

Nodo.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 Remote Config archiviato, emettere un HTTP POST 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>" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:rollback -d '{"version_number": 6}'</pre>

La risposta contiene i contenuti del modello archiviato ora attivo, con i relativi metadati della nuova versione.

Console Firebase

Per le versioni precedenti del modello idonee per il rollback, in alto a destra nella pagina Cronologia modifiche viene visualizzato un pulsante di opzione per eseguire il rollback a quella versione. Fare clic e confermare solo se si è sicuri di voler eseguire il rollback a quella versione e utilizzare immediatamente quei valori per tutte le app e gli utenti.

Firebase CLI

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 in quanto il suo numero di versione è 11. La versione originale 6 è ancora memorizzata, supponendo che non abbia raggiunto la sua scadenza, e la versione 11 diventa il modello attivo.