Modelli e controllo delle versioni di Remote Config


I modelli Remote Config sono insiemi di modelli in formato JSON e le condizioni che hai creato per il tuo progetto Firebase. Tu creare modelli client da cui l'app recupera i valori, e server, da cui i client server possono recuperare i valori.

Questa sezione illustra i modelli di client. Per scoprire di più sui modelli specifici per il server, fai clic su Modelli di server.

Puoi modificare e gestire il modello utilizzando la console Firebase, che mostra i contenuti del modello in formato grafico Parametri e Schede Condizioni:

Puoi utilizzare anche l'API REST e l'SDK Admin di Remote Config o l'interfaccia a riga di comando Firebase per modificare e gestire modello di client.

Ecco un esempio di file modello di server:

{
  "parameters": {
    "preamble_prompt": {
      "defaultValue": {
        "value": "You are a helpful assistant who knows everything there is to know about Firebase! "
      },
      "description": "Add this prompt to the user's prompt",
      "valueType": "STRING"
    },
    "model_name": {
      "defaultValue": {
        "value": "gemini-pro-test"
      },
      "valueType": "STRING"
    },
    "generation_config": {
      "defaultValue": {
        "value": "{\"temperature\": 0.9, \"maxOutputTokens\": 2048, \"topP\": 0.9, \"topK\": 20}"
      },
      "valueType": "JSON"
    },
  },
  "version": {
    "versionNumber": "19",
    "isLegacy": true
  }
}

Puoi eseguire queste attività di gestione delle versioni con la console Firebase:

  • Elenco di tutte le versioni dei modelli archiviate
  • Recuperare una versione specifica
  • Esegui il rollback a una versione client specifica
  • Elimina Remote Config modelli dalla modifica storia pagina

Esiste un limite totale di 300 versioni archiviate dell'intera durata per tipo di modello (300 modelli client e 300 modelli server), tra cui numeri di versione per i modelli eliminati. Se pubblichi più di 300 versioni per tipo di modello per tutta la durata di un progetto, vengono eliminate le versioni precedenti, mantenendo un massimo di 300 versioni quel tipo.

Ogni volta che aggiorni i parametri, Remote Config crea un nuovo modello Remote Config con versione e archivia il modello precedente come versione che puoi recuperare o a cui eseguire il rollback in base alle esigenze. 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 relativi metadati una specifica versione.

Puoi eliminare Remote Config di modelli in base alle tue esigenze dal Cronologia delle modifiche pagina attiva la console Remote Config.

Gestire le versioni del modello Remote Config

Questa sezione descrive come gestire le versioni del tuo Remote Config modello.

Elenca tutte le versioni archiviate del modello Remote Config

Puoi recuperare un elenco di tutte le versioni archiviate del modello Remote Config. Per farlo:

Console Firebase

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

I dettagli visualizzati per ogni versione archiviata includono informazioni sul fatto che le modifiche hanno avuto origine con la console, con l'API REST, da un rollback, o modifiche incrementali apportate da un salvataggio forzato del modello.

Interfaccia a riga di comando Firebase

firebase remoteconfig:versions:list

Utilizza l'opzione --limit per limitare il numero di versioni restituite. Supera lo "0" per recuperare tutte le versioni.

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);
    });
}

Java

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());
}

REST

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

L'elenco dei modelli include i metadati di tutte le versioni archiviate, tra cui data e ora dell'aggiornamento, l'utente che lo ha eseguito e come. Ecco un esempio di elemento di versione:

```json
{
  "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"
  }]
}
```

Recuperare una versione specifica del modello Remote Config

Puoi recuperare tutti i dati archiviati del modello Remote Config. Per recuperare un modello archiviato versione:

Console Firebase

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

Puoi visualizzare le differenze dettagliate della versione attualmente selezionata e di qualsiasi altra versione archiviata passando il mouse sopra il menu contestuale di una versione non selezionata e selezionando Confronta con la versione selezionata.

Interfaccia a riga di comando Firebase

firebase remoteconfig:get -v VERSION_NUMBER

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

Node.js

Supera getTemplate() senza argomenti per recuperare la versione più recente del modello, 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);
  });

Java

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());

REST

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 puoi usarlo per specificare i numeri di versione per gli aggiornamenti. Un risultato simile richiesta senza il ?version_number consente di recuperare il modello attivo corrente.

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

Puoi eseguire il rollback a qualsiasi versione memorizzata del modello. Per eseguire il rollback di un modello:

Console Firebase

Per le versioni precedenti del modello idonee per il rollback, per eseguire il rollback a quella versione è visualizzato in alto a destra Cronologia delle modifiche . Fai clic e conferma solo se vuoi eseguire il rollback e utilizzare questi valori immediatamente per tutte le app e gli utenti.

Interfaccia a riga di comando Firebase

firebase remoteconfig:rollback -v VERSION_NUMBER

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);
  })

Java

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());
  }
}

REST

Per eseguire il rollback a un modello Remote Config archiviato, invia un POST HTTP con il metodo personalizzato :rollback e, nel corpo della richiesta, la versione specifica per applicare le modifiche. Ad 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 i contenuti del modello archiviato ora attivo, con il suo dei metadati della nuova versione.

Tieni presente che questa operazione di rollback crea effettivamente una nuova versione numerata. Ad esempio, eseguire il rollback dalla versione 10 alla versione 6 crea in modo efficace una nuova copia della versione 6, rispetto all'originale solo in quanto il suo numero di versione è 11. La versione originale 6 è ancora archiviata, a condizione che non abbia raggiunto la scadenza, e la versione 11 diventa il modello attivo.

Elimina un modello di Remote Config

Puoi eliminare Remote Config modelli dalla console Firebase. A elimina un modello Remote Config:

1. Nella pagina Remote Config Parametri , fai clic su Cronologia delle modifiche.
  1. Passa al modello che desideri eliminare e fai clic su Altro, quindi seleziona Elimina.

  2. Quando ti viene chiesto di confermare l'eliminazione, fai clic su Elimina.

Scarica e pubblica Remote Config modelli

Scarica e pubblica Remote Config modelli per integrarli nei tuoi controllo del codice sorgente e creazione di sistemi, automatizzare gli aggiornamenti delle configurazioni e mantenere i parametri e valori sincronizzati tra più progetti.

Puoi scaricare il modello Remote Config attualmente attivo dalla console Firebase. Puoi quindi aggiornare in un file JSON esportato e pubblicarlo nello stesso progetto, oppure in un nuovo progetto esistente.

Supponiamo che tu abbia più progetti che rappresentano diverse fasi ciclo di vita dello sviluppo del software, ad esempio sviluppo, test, gestione temporanea e produzione ambienti cloud-native. In questo caso, potresti promuovere un modello completamente testato dal tuo di gestione temporanea nell'ambiente di produzione, scaricandolo di gestione temporanea e pubblicazione nel progetto di produzione.

Puoi anche utilizzare questo metodo per eseguire la migrazione delle configurazioni da un progetto all'altro o compilare un nuovo progetto con i parametri e i valori di un progetto esistente.

I parametri e i valori parametro creati specificatamente come varianti in un A/B Testing esperimento non è incluso nei modelli esportati.

Per esportare e importare Remote Config modelli:

  1. Scarica il modello di configurazione Remote Config corrente.
  2. Convalida il modello Remote Config.
  3. Pubblica il modello Remote Config.

Scarica il modello corrente di Remote Config

Usa quanto segue per scaricare il modello Remote Config attivo in Formato JSON:

Console Firebase

  1. Da Parametri o condizioni di Remote Config scheda, apri il Menu e Seleziona Scarica file di configurazione attuale.
  2. Quando richiesto, fai clic su Scarica file di configurazione e scegli il percorso in cui vuoi salvare il file, poi fai clic su Salva.

Interfaccia a riga di comando Firebase

firebase remoteconfig:get -o filename

Node.js

function getTemplate() {
  var config = admin.remoteConfig();
  config.getTemplate()
      .then(function (template) {
        console.log('ETag from server: ' + template.etag);
        var templateStr = JSON.stringify(template);
        fs.writeFileSync('config.json', templateStr);
      })
      .catch(function (err) {
        console.error('Unable to get template');
        console.error(err);
      });
}

Java

Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get();
// See the ETag of the fetched template.
System.out.println("ETag from server: " + template.getETag());

REST

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

Questo comando genera il payload JSON in un file e le intestazioni (inclusa l'ETag) in un file headers separato.

Convalida il modello Remote Config

Puoi convalidare gli aggiornamenti dei modelli prima di pubblicarli utilizzandoFirebase Admin SDK o l'API REST. I modelli vengono convalidati anche quando tenti per pubblicare dall'interfaccia a riga di comando Firebase o dalla console Firebase.

Il processo di convalida dei modelli controlla la presenza di errori come chiavi duplicate per parametri e condizioni, nomi di condizioni non validi o condizioni inesistenti oppure il formato corretto degli ETag. Ad esempio, una richiesta contenente più del numero di chiavi consentito (2000) restituirà il messaggio di errore Param count too large.

Node.js

function validateTemplate(template) {
  admin.remoteConfig().validateTemplate(template)
      .then(function (validatedTemplate) {
        // The template is valid and safe to use.
        console.log('Template was valid and safe to use');
      })
      .catch(function (err) {
        console.error('Template is invalid and cannot be published');
        console.error(err);
      });
}

Java

try {
  Template validatedTemplate = FirebaseRemoteConfig.getInstance()
          .validateTemplateAsync(template).get();
  System.out.println("Template was valid and safe to use");
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Template is invalid and cannot be published");
    System.out.println(rcError.getMessage());
  }
}

REST

Convalida gli aggiornamenti del modello aggiungendo il parametro URL ?validate_only=true alla tua richiesta di pubblicazione:

curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig?validate_only=true -d @filename

Se il modello è stato convalidato correttamente, il comando curl restituisce il modello JSON inviato e, nel file headers salvato, troverai uno stato HTTP/2 200 e un ETag aggiornato con il suffisso -0. Se le tue non è stato convalidato, riceverai l'errore di convalida nella una risposta JSON e il file headers conterrà una risposta non 200 (e nessun ETag).

Pubblica il modello Remote Config

Dopo aver scaricato un modello, apportato le modifiche necessarie ai contenuti JSON e e la convalida, puoi pubblicarla in un progetto.

La pubblicazione di un modello sostituisce l'intero modello di configurazione esistente con aggiornato e incrementa la versione del modello di uno. Poiché l'intera configurazione viene sostituita, se elimini un parametro dal file JSON e lo pubblichi, il parametro viene eliminato dal server e non è più disponibile per i client.

Dopo la pubblicazione, le modifiche a parametri e valori sono immediatamente disponibili alle tue app e ai tuoi utenti. Se necessario, puoi esegui il rollback a una versione precedente.

Usa i seguenti comandi per pubblicare il modello:

Console Firebase

  1. Da Parametri o condizioni di Remote Config apri il Menu, e seleziona Pubblica da un file.
  2. Quando richiesto, fai clic su Sfoglia, naviga e seleziona Remote Config file da pubblicare, quindi fai clic su Seleziona.
  3. Il file verrà convalidato e, se la convalida va a buon fine, puoi fare clic su Pubblica per rendere la configurazione immediatamente disponibile per le tue app e i tuoi utenti.

Node.js

function publishTemplate() {
  var config = admin.remoteConfig();
  var template = config.createTemplateFromJSON(
      fs.readFileSync('config.json', 'UTF8'));
  config.publishTemplate(template)
      .then(function (updatedTemplate) {
        console.log('Template has been published');
        console.log('ETag from server: ' + updatedTemplate.etag);
      })
      .catch(function (err) {
        console.error('Unable to publish template.');
        console.error(err);
      });
}

Java

try {
  Template publishedTemplate = FirebaseRemoteConfig.getInstance()
          .publishTemplateAsync(template).get();
  System.out.println("Template has been published");
  // See the ETag of the published template.
  System.out.println("ETag from server: " + publishedTemplate.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Unable to publish template.");
    System.out.println(rcError.getMessage());
  }
}

REST

curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -d @filename

Per questo comando curl, puoi specificare i contenuti utilizzando il simbolo "@" seguito dal nome del file.

Remote Config personalizzazioni e condizioni sono incluse in di modelli scaricati, quindi è importante sapere quanto segue Limitazioni quando tenti di pubblicare in un progetto diverso:

  • Impossibile importare le personalizzazioni da un progetto all'altro.

    Ad esempio, se hai abilitato le personalizzazioni nel progetto e scaricare e modificare un modello, puoi pubblicarlo nello stesso progetto, ma non puoi pubblicarlo in un altro progetto a meno che non lo elimini le personalizzazioni dal modello.

  • Le condizioni possono essere importate da un progetto all'altro, ma tieni presente che qualsiasi valori condizionali specifici (come ID app o segmenti di pubblico), devono esistere in il progetto di destinazione prima della pubblicazione.

    Ad esempio, se hai un parametro Remote Config che utilizza una condizione che specifica un valore di piattaforma iOS, il modello può essere pubblicato in un altro progetto, perché i valori della piattaforma sono gli stessi per qualsiasi progetto. Tuttavia, se contiene una condizione che si basa su un ID app o un utente specifici pubblico che non esiste nel progetto di destinazione. La convalida non andrà a buon fine.

  • Se il modello che intendi pubblicare contiene condizioni che si basano su Google Analytics, Analytics deve essere attivato nel target progetto.

Scarica le impostazioni predefinite del modello Remote Config

Poiché la tua app potrebbe non essere sempre connessa a internet, devi configurare i valori predefiniti dell'app lato client per tutti e Remote Config parametri. Dovresti anche sincronizzare periodicamente il client predefinito dell'app e Remote Config valori parametro predefiniti del backend, perché possono cambiare nel tempo.

Come descritto nei link specifici della piattaforma alla fine di questa sezione, puoi configura manualmente queste impostazioni predefinite nell'app oppure puoi semplificare questa procedura Scaricare file contenenti solo le coppie chiave-valore per tutti i parametri e i relativi valori predefiniti nel modello Remote Config attivo. Puoi quindi includi questo file nel tuo progetto e configura la tua app per importare questi valori.

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

Ti consigliamo di scaricare periodicamente le impostazioni predefinite di Remote Config prima di qualsiasi nuova per garantire che l'app e il backend Remote Config restino in sincronizzare.

Per scaricare un file contenente i valori predefiniti del modello:

REST

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 format, a seconda del file che desideri scaricare.

Console Firebase

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

Per ulteriori informazioni sull'importazione dei valori predefiniti di Remote Config nella tua app, consulta: