Remote Config-Vorlagen und -Versionierung


Remote Config Vorlagen sind Gruppen von Parametern und Bedingungen im JSON-Format , die Sie für Ihr Firebase-Projekt erstellt haben. Sie können Clientvorlagen erstellen, aus denen Ihre App Werte abruft, und Servervorlagen, aus denen Serverclients Werte abrufen können.

In diesem Abschnitt werden Clientvorlagen behandelt. Weitere Informationen zu serverspezifischen Vorlagen finden Sie unter Servervorlagen.

Sie können die Vorlage in der Firebase Console ändern und verwalten. Dort wird der Inhalt der Vorlage auf den Die Tabs „Parameter“ und „Bedingungen“.

Sie können Ihre Clientvorlage auch mit der REST API und dem Admin SDK oder der Firebase CLI ändern und verwalten.Remote Config

Hier sehen Sie ein Beispiel für eine Servervorlagendatei:

{
  "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
  }
}

Mit der Firebase Console können Sie die folgenden Aufgaben zur Versionsverwaltung ausführen:

  • Alle gespeicherten Vorlagenversionen auflisten
  • Eine bestimmte Version abrufen
  • Rollback zu einer bestimmten Clientversion durchführen
  • Remote Config Vorlagen auf der Seite „Änderungsverlauf“ löschen

Es gilt ein Limit von insgesamt 300 gespeicherten Versionen pro Vorlagentyp (300 Clientvorlagen und 300 Servervorlagen), einschließlich der gespeicherten Versionsnummern für gelöschte Vorlagen. Wenn Sie während der Lebensdauer eines Projekts mehr als 300 Vorlagenversionen pro Vorlagentyp veröffentlichen, werden die ältesten Versionen gelöscht, sodass maximal 300 Versionen dieses Typs vorhanden sind.

Jedes Mal, wenn Sie Parameter aktualisieren, erstellt Remote Config eine neue versionierte Remote Config-Vorlage und speichert die vorherige Vorlage als eine Version, die Sie bei Bedarf abrufen oder auf die Sie ein Rollback durchführen können. Die Versionsnummern werden sequenziell ab dem von Remote Config gespeicherten Anfangswert erhöht. Alle Vorlagen enthalten das Feld version mit Metadaten zu dieser bestimmten Version.

Sie können Remote Config Vorlagen bei Bedarf auf der Änderungsverlauf auf der Remote Config Konsole löschen.

Vorlagenversionen verwaltenRemote Config

In diesem Abschnitt wird beschrieben, wie Sie Versionen Ihrer Remote Config Vorlage verwalten.

Alle gespeicherten Versionen der Remote Config Vorlage auflisten

Sie können eine Liste aller gespeicherten Versionen der Remote Config Vorlage abrufen. Dazu:

Firebase console

Wählen Sie auf dem Tab Parameter rechts oben das Symbol „Uhr“ aus. Dadurch wird die Seite „Änderungsverlauf“ geöffnet, auf der alle gespeicherten Vorlagenversionen rechts in einem Listenmenü aufgeführt sind.

Die Details für jede gespeicherte Version enthalten Informationen dazu, ob die Änderungen in der Console, mit der REST API oder durch ein Rollback vorgenommen wurden oder ob es sich um inkrementelle Änderungen aus einer erzwungenen Speicherung der Vorlage handelt.

Firebase CLI

firebase remoteconfig:versions:list

Mit der Option --limit können Sie die Anzahl der zurückgegebenen Versionen begrenzen. Übergeben Sie „0“, um alle Versionen abzurufen.

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

Die Liste der Vorlagen enthält Metadaten für alle gespeicherten Versionen, einschließlich des Zeitpunkts der Aktualisierung, des Nutzers, der sie vorgenommen hat, und der Art der Aktualisierung. Hier sehen Sie ein Beispiel für ein Versionselement:

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

Eine bestimmte Version der Remote Config Vorlage abrufen

Sie können jede gespeicherte Version der Remote Config Vorlage abrufen. So rufen Sie eine gespeicherte Vorlagenversion ab:

Firebase console

Standardmäßig wird im Detailbereich auf dem Tab „Änderungsverlauf“ die aktuelle aktive Vorlage angezeigt. Wenn Sie Details zu einer anderen Version in der Liste aufrufen möchten, wählen Sie sie im Menü rechts aus.

Wenn Sie einen detaillierten Vergleich der aktuell ausgewählten Version mit einer anderen gespeicherten Version sehen möchten, bewegen Sie den Mauszeiger auf das Kontextmenü für eine nicht ausgewählte Version und wählen Sie Mit ausgewählter Version vergleichen aus.

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

Optional können Sie die Ausgabe mit -o, FILENAME in eine bestimmte Datei schreiben.

Node.js

Übergeben Sie getTemplate() ohne Argumente, um die neueste Version der Vorlage abzurufen. Wenn Sie eine bestimmte Version abrufen möchten, verwenden Sie 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

Der URL-Parameter ?version_number ist nur für GET-Vorgänge gültig. Sie können damit keine Versionsnummern für Aktualisierungen angeben. Eine ähnliche GET-Anfrage ohne den Parameter ?version_number würde die aktuelle aktive Vorlage abrufen.

Rollback zu einer bestimmten gespeicherten Version der Remote Config Vorlage durchführen

Sie können ein Rollback zu jeder gespeicherten Version der Vorlage durchführen. So führen Sie ein Rollback für eine Vorlage durch:

Firebase console

Für frühere Vorlagenversionen, für die ein Rollback möglich ist, wird rechts oben auf der Seite „Änderungsverlauf“ eine Optionsschaltfläche angezeigt, mit der Sie ein Rollback zu dieser Version durchführen können. Klicken Sie nur dann darauf und bestätigen Sie den Vorgang, wenn Sie sicher sind, dass Sie ein Rollback zu dieser Version durchführen und diese Werte sofort für alle Apps und Nutzer verwenden möchten.

Firebase CLI

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

Wenn Sie ein Rollback zu einer gespeicherten Remote Config Vorlage durchführen möchten, senden Sie eine HTTP POST-Anfrage mit der benutzerdefinierten Methode :rollback und geben Sie im Anfragetext die anzuwendende Version an. Beispiel:

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}'

Die Antwort enthält den Inhalt der jetzt aktiven gespeicherten Vorlage mit ihren neuen Versionsmetadaten.

Bei diesem Rollback-Vorgang wird effektiv eine neue nummerierte Version erstellt. Wenn Sie beispielsweise ein Rollback von Version 10 zu Version 6 durchführen, wird eine neue Kopie von Version 6 erstellt, die sich vom Original nur dadurch unterscheidet, dass ihre Versionsnummer 11 ist. Die ursprüngliche Version 6 ist weiterhin gespeichert, sofern sie nicht abgelaufen ist, und Version 11 wird zur aktiven Vorlage.

Vorlage löschenRemote Config

Sie können Remote Config Vorlagen in der Firebase Console löschen. So löschen Sie eine Remote Config Vorlage:

1. Klicken Sie auf der Seite „Remote Config Parameter “ auf „ Änderungsverlauf“.
  1. Wechseln Sie zu der Vorlage, die Sie löschen möchten, klicken Sie auf Mehr und wählen Sie Löschen aus.

  2. Wenn Sie aufgefordert werden, das Löschen zu bestätigen, klicken Sie auf Löschen.

Remote Config-Vorlagen herunterladen und veröffentlichen

Sie können Remote Config Vorlagen herunterladen und veröffentlichen, um sie in Ihre Quellcodeverwaltung und Ihre Build-Systeme zu integrieren, Konfigurationsaktualisierungen zu automatisieren und Parameter und Werte in mehreren Projekten zu synchronisieren.

Sie können die aktuell aktive Remote Config Vorlage in der Firebase Console herunterladen. Anschließend können Sie die exportierte JSON-Datei aktualisieren und im selben Projekt oder in einem neuen oder vorhandenen Projekt veröffentlichen.

Angenommen, Sie haben mehrere Projekte, die verschiedene Phasen des Softwareentwicklungszyklus darstellen, z. B. Entwicklungs-, Test-, Staging- und Produktionsumgebungen. In diesem Fall können Sie eine vollständig getestete Vorlage aus Ihrer Staging-Umgebung in Ihre Produktionsumgebung übertragen, indem Sie sie aus Ihrem Staging-Projekt herunterladen und in Ihrem Produktionsprojekt veröffentlichen.

Sie können diese Methode auch verwenden, um Konfigurationen von einem Projekt in ein anderes zu migrieren oder ein neues Projekt mit Parametern und Werten aus einem bestehenden Projekt zu füllen.

Parameter und Parameterwerte, die speziell als Varianten in einem A/B Testing Experiment erstellt wurden, sind nicht in exportierten Vorlagen enthalten.

So exportieren und importieren Sie Remote Config Vorlagen:

  1. Laden Sie die aktuelle Remote Config Konfigurationsvorlage herunter.
  2. Validieren Sie die Remote Config Vorlage.
  3. Veröffentlichen Sie die Remote Config Vorlage.

Aktuelle Remote Config-Vorlage herunterladen

Verwenden Sie Folgendes, um die aktive Remote Config Vorlage in JSON-Format herunterzuladen:

Firebase console

  1. Öffnen Sie auf dem Tab „ Remote ConfigParameter“ oder „Bedingungen “ das Menü und wählen Sie Aktuelle Konfigurationsdatei herunterladen aus.
  2. Klicken Sie auf Konfigurationsdatei herunterladen, wählen Sie den Speicherort aus, an dem Sie die Datei speichern möchten, und klicken Sie dann auf Speichern.

Firebase CLI

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

Mit diesem Befehl wird die JSON-Nutzlast in eine Datei und die Header (einschließlich des ETag) in eine separate headers-Datei ausgegeben.

Remote Config-Vorlage validieren

Sie können Ihre Vorlagenaktualisierungen vor der Veröffentlichung mit dem Firebase Admin SDK oder der REST API validieren. Vorlagen werden auch validiert, wenn Sie versuchen, sie in der Firebase CLI oder der Firebase Console zu veröffentlichen.

Bei der Vorlagenvalidierung wird nach Fehlern wie doppelten Schlüsseln für Parameter und Bedingungen, ungültigen oder nicht vorhandenen Bedingungsnamen oder falsch formatierten ETags gesucht. Wenn eine Anfrage beispielsweise mehr als die zulässige Anzahl von Schlüsseln (2.000) enthält, wird die Fehlermeldung Param count too large zurückgegeben.

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

Wenn Sie Vorlagenaktualisierungen validieren möchten, hängen Sie den URL-Parameter ?validate_only=true an Ihre Veröffentlichungsanfrage an:

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

Wenn Ihre Vorlage erfolgreich validiert wurde, gibt der curl-Befehl die von Ihnen gesendete JSON-Vorlage zurück. In der gespeicherten headers Datei finden Sie den HTTP/2-Status 200 und ein aktualisiertes ETag mit dem Suffix -0. Wenn Ihre Vorlage nicht validiert wurde, erhalten Sie den Validierungsfehler in der JSON-Antwort und Ihre headers Datei enthält eine Antwort, die nicht 200 ist (und kein ETag).

Remote Config Vorlage veröffentlichen

Nachdem Sie eine Vorlage heruntergeladen, die erforderlichen Änderungen am JSON-Inhalt vorgenommen und sie validiert haben, können Sie sie in einem Projekt veröffentlichen.

Beim Veröffentlichen einer Vorlage wird die gesamte vorhandene Konfigurationsvorlage durch die aktualisierte Datei ersetzt und die Vorlagenversion um eins erhöht. Da die gesamte Konfiguration ersetzt wird, wird der Parameter vom Server gelöscht und ist für Clients nicht mehr verfügbar, wenn Sie einen Parameter aus der JSON-Datei löschen und sie veröffentlichen.

Nach der Veröffentlichung sind Änderungen an Parametern und Werten sofort für Ihre Apps und Nutzer verfügbar. Bei Bedarf können Sie ein Rollback zu einer früheren Version durchführen.

Verwenden Sie die folgenden Befehle, um Ihre Vorlage zu veröffentlichen:

Firebase console

  1. Öffnen Sie auf dem Remote Config Tab „Parameter“ oder „Bedingungen“ das Menü, und wählen Sie Aus einer Datei veröffentlichen aus.
  2. Klicken Sie auf Durchsuchen, suchen Sie die Remote Config Datei, die Sie veröffentlichen möchten, und wählen Sie sie aus. Klicken Sie dann auf Auswählen.
  3. Die Datei wird validiert. Wenn die Validierung erfolgreich ist, können Sie auf Veröffentlichen klicken, um die Konfiguration sofort für Ihre Apps und Nutzer verfügbar zu machen.

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

Für diesen curl-Befehl können Sie den Inhalt mit dem Zeichen „@“ gefolgt vom Dateinamen angeben.

Remote Config Personalisierungen und Bedingungen sind in heruntergeladenen Vorlagen enthalten. Daher müssen Sie die folgenden Einschränkungen beachten, wenn Sie versuchen, in einem anderen Projekt zu veröffentlichen:

  • Personalisierungen können nicht von einem Projekt in ein anderes importiert werden.

    Wenn Sie beispielsweise Personalisierungen in Ihrem Projekt aktiviert haben und eine Vorlage herunterladen und bearbeiten, können Sie sie im selben Projekt veröffentlichen. Sie können sie jedoch nicht in einem anderen Projekt veröffentlichen, es sei denn, Sie löschen die Personalisierungen aus der Vorlage.

  • Bedingungen können von einem Projekt in ein anderes importiert werden. Alle spezifischen bedingten Werte (z. B. App-IDs oder Zielgruppen) müssen jedoch im Zielprojekt vorhanden sein, bevor Sie veröffentlichen.

    Wenn Sie beispielsweise einen Remote Config Parameter haben, der eine Bedingung verwendet, die einen Plattformwert von iOS angibt, kann die Vorlage in einem anderen Projekt veröffentlicht werden, da die Plattformwerte für alle Projekte gleich sind. Wenn sie jedoch eine Bedingung enthält, die auf einer bestimmten App-ID oder Zielgruppe basiert, die im Zielprojekt nicht vorhanden ist, schlägt die Validierung fehl.

  • Wenn die Vorlage, die Sie veröffentlichen möchten, Bedingungen enthält, die auf Google Analytics, Analytics basieren, muss im Ziel Projekt aktiviert sein.

Standardwerte für Vorlagen herunterladenRemote Config

Da Ihre App möglicherweise nicht immer mit dem Internet verbunden ist, sollten Sie Standardwerte für alle Remote Config Parameter auf Clientseite konfigurieren. Außerdem sollten Sie die Standardwerte für Ihre App-Clients und die Standardparameterwerte für das Remote Config Backend regelmäßig synchronisieren, da sie sich im Laufe der Zeit ändern können.

Wie in den plattformspezifischen Links am Ende dieses Abschnitts beschrieben, können Sie diese Standardwerte manuell in Ihrer App festlegen. Sie können diesen Prozess aber auch optimieren, indem Sie Dateien herunterladen, die nur die Schlüssel-Wert-Paare für alle Parameter und ihre Standardwerte in der aktiven Remote Config Vorlage enthalten. Anschließend können Sie diese Datei in Ihr Projekt einfügen und Ihre App so konfigurieren, dass diese Werte importiert werden.

Sie können diese Dateien im XML-Format für Android-Apps, im Format der Eigenschaftsliste (plist) für iOS-Apps und im JSON-Format für Web-Apps herunterladen.

Wir empfehlen, die Remote Config Standardwerte vor jeder neuen App-Version herunterzuladen, um sicherzustellen, dass Ihre App und das Remote Config Backend synchron bleiben.

So laden Sie eine Datei mit Vorlagenstandardwerten herunter:

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'

Verwenden Sie XML, PLIST oder JSON als Wert für format, je nachdem, welches Dateiformat Sie herunterladen möchten.

Firebase console

  1. Öffnen Sie auf dem Tab Parameter das Menü und wählen Sie Standardwerte herunterladen aus.
  2. Klicken Sie auf das Optionsfeld für das gewünschte Dateiformat und dann auf Datei herunterladen.

Weitere Informationen zum Importieren von Remote Config Standardwerten in Ihre App finden Sie unter: