Remote Config-Vorlagen und -Versionierung


Remote Config-Vorlagen sind JSON-formatierte Parameter und Bedingungen, die Sie für Ihr Firebase-Projekt erstellt haben. Sie können Clientvorlagen erstellen, aus denen Ihre App Werte abrufen kann, und Servervorlagen, aus denen Server-Clients Werte abrufen können.

In diesem Abschnitt werden Client-Vorlagen behandelt. Informationen zu serverspezifischen Vorlagen finden Sie unter Servervorlagen.

Sie ändern und verwalten die Vorlage über die Firebase-Konsole, in der der Inhalt der Vorlage auf den TabsTab Parameter und Bedingungen

Sie können auch die Remote Config REST API und das Admin SDK oder die Firebase CLI verwenden, um die Clientvorlage zu ändern und zu verwalten.

Hier sehen Sie ein Beispiel für eine Server-Vorlagedatei:

{
  "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-Konsole können Sie die folgenden Aufgaben zur Versionsverwaltung ausführen:

  • Alle gespeicherten Vorlagenversionen auflisten
  • Bestimmte Version abrufen
  • Rollback auf eine bestimmte Clientversion durchführen
  • Remote Config Vorlagen auf der Seite Änderungsverlauf löschen

Pro Vorlagentyp (300 Clientvorlagen und 300 Servervorlagen) können insgesamt 300 Versionen gespeichert werden. Dazu gehören auch die 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 Version, die Sie bei Bedarf abrufen oder auf die Sie zurücksetzen können. Die Versionsnummern werden fortlaufend vom von Remote Config gespeicherten Anfangswert erhöht. Alle Vorlagen enthalten ein version-Feld, das Metadaten zu dieser bestimmten Version enthält.

Sie können Remote Config-Vorlagen bei Bedarf über die Seite Änderungsverlauf in der Remote Config-Konsole löschen.

Remote Config-Vorlagenversionen verwalten

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

Alle gespeicherten Versionen der Vorlage Remote Config auflisten

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

Firebase-Konsole

Wählen Sie auf dem Tab Parameter oben rechts das Uhrensymbol aus. Daraufhin wird die Seite Änderungsverlauf geöffnet. Rechts in einem Listenmenü werden alle gespeicherten Vorlagenversionen aufgelistet.

Die für jede gespeicherte Version angezeigten Details enthalten Informationen dazu, ob die Änderungen in der Console, in der REST API, durch ein Rollback oder durch inkrementelle Änderungen nach einem erzwungenen Speichern der Vorlage vorgenommen wurden.

Firebase CLI

firebase remoteconfig:versions:list

Mit der Option --limit können Sie die Anzahl der zurückgegebenen Versionen begrenzen. Geben Sie „0“ ein, 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 und Weise, wie sie vorgenommen wurde. Hier ist 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 Vorlage Remote Config abrufen

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

Firebase-Konsole

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

Sie können sich einen detaillierten Vergleich der aktuell ausgewählten Version mit einer anderen gespeicherten Version ansehen. Bewegen Sie dazu den Mauszeiger auf das Kontextmenü einer nicht ausgewählten 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 angegebene Datei schreiben.

Node.js

Geben Sie getTemplate() ohne Argumente an, um die neueste Version der Vorlage abzurufen. Verwenden Sie getTemplateAtVersion(), um eine bestimmte Version abzurufen.

// 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 Updates angeben. Eine ähnliche GET-Anfrage ohne den Parameter ?version_number würde die aktuell aktive Vorlage abrufen.

Rollback auf eine bestimmte gespeicherte Version der Remote Config-Vorlage

Sie können zu einer beliebigen gespeicherten Version der Vorlage zurückkehren. So führen Sie ein Rollback für eine Vorlage durch:

Firebase-Konsole

Bei früheren Vorlagenversionen, die für ein Rollback infrage kommen, wird rechts oben auf der Seite Änderungsverlauf eine Schaltfläche angezeigt, über die Sie zu dieser Version zurückkehren können. Klicken Sie nur dann darauf und bestätigen Sie die Aktion, wenn Sie sicher sind, dass Sie zu dieser Version zurückkehren und die 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 zu einer gespeicherten Remote Config-Vorlage zurückkehren möchten, senden Sie eine HTTP-POST-Anfrage mit der benutzerdefinierten Methode :rollback und der anzuwendenden Version im Textkörper. 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 den Metadaten der neuen Version.

Beachten Sie, dass durch diesen Rollback-Vorgang eine neue nummerierte Version erstellt wird. Wenn Sie beispielsweise von Version 10 auf Version 6 zurückgehen, wird effektiv eine neue Kopie von Version 6 erstellt, die sich nur durch die Versionsnummer 11 vom Original unterscheidet. Die ursprüngliche Version 6 wird weiterhin gespeichert, sofern ihr Ablaufdatum noch nicht erreicht wurde. Version 11 wird zur aktiven Vorlage.

Remote Config-Vorlage löschen

Sie können Remote Config-Vorlagen über die Firebase-Konsole löschen. So löschen Sie eine Remote Config-Vorlage:

1. Klicken Sie auf der Seite Remote Config Parameter auf Änderungsverlauf.
  1. Wechseln Sie zur Vorlage, die Sie löschen möchten, klicken Sie auf das Dreipunkt-Menü Mehr und wählen Sie Löschen aus.

  2. Wenn Sie dazu aufgefordert werden, den Löschvorgang 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 Quellkontroll- und Build-Systeme einzubinden, Konfigurationsupdates zu automatisieren und Parameter und Werte in mehreren Projekten synchron zu halten.

Sie können die derzeit aktive Remote Config-Vorlageüber die Firebase-Konsole herunterladen. Sie können die exportierte JSON-Datei dann aktualisieren und in dasselbe Projekt oder in ein neues oder vorhandenes Projekt veröffentlichen.

Angenommen, Sie haben mehrere Projekte, die verschiedene Phasen des Softwareentwicklungszyklus repräsentieren, 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 übernehmen, indem Sie sie aus Ihrem Staging-Projekt herunterladen und in Ihrem Produktionsprojekt veröffentlichen.

Mit dieser Methode können Sie auch Konfigurationen von einem Projekt in ein anderes migrieren oder ein neues Projekt mit Parametern und Werten aus einem bestehenden Projekt füllen.

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

So exportieren und importieren Sie Remote Config-Vorlagen:

  1. Lade 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

So laden Sie die aktive Remote Config-Vorlage im JSON-Format herunter:

Firebase-Konsole

  1. Öffnen Sie auf dem Tab Remote Config Parameter oder Bedingungen das Dreipunkt-Menü und wählen Sie Aktuelle Konfigurationsdatei herunterladen aus.
  2. Klicken Sie auf die Aufforderung hin auf Konfigurationsdatei herunterladen, wählen Sie den Speicherort für die Datei aus 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 ETags) in eine separate headers-Datei ausgegeben.

Remote Config-Vorlage validieren

Sie können Ihre Vorlagenaktualisierungen vor der Veröffentlichung mit Firebase Admin SDK oder der REST API prüfen. Vorlagen werden auch validiert, wenn Sie versuchen, sie über die Firebase-Befehlszeile oder die Firebase-Konsole zu veröffentlichen.

Bei der Validierung der Vorlage werden Fehler wie doppelte Schlüssel für Parameter und Bedingungen, ungültige Bedingungsnamen oder nicht vorhandene Bedingungen oder falsch formatierte ETags geprüft. 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

Validieren Sie Vorlagenaktualisierungen, indem Sie dem Veröffentlichungsantrag den URL-Parameter ?validate_only=true anhängen:

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 eingereichte JSON-Vorlage zurück. In der gespeicherten Datei headers 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 an den JSON-Inhalten vorgenommen und sie validiert haben, können Sie sie in einem Projekt veröffentlichen.

Wenn Sie eine Vorlage veröffentlichen, wird die gesamte vorhandene Konfigurationsvorlage durch die aktualisierte Datei ersetzt und die Vorlagenversion wird um eins erhöht. Da die gesamte Konfiguration ersetzt wird, wird der Parameter gelöscht, wenn Sie ihn aus der JSON-Datei löschen und veröffentlichen. Er ist dann nicht mehr auf dem Server verfügbar und kann von den Clients nicht mehr verwendet werden.

Nach der Veröffentlichung sind Änderungen an Parametern und Werten sofort für Ihre Apps und Nutzer verfügbar. Bei Bedarf können Sie auf eine vorherige Version zurücksetzen.

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

Firebase-Konsole

  1. Öffnen Sie auf dem Tab Remote Config Parameter oder Bedingungen das Dreipunkt-Menü und wählen Sie Aus einer Datei veröffentlichen aus.
  2. Klicken Sie auf Durchsuchen, suchen Sie die Datei Remote Config, die Sie veröffentlichen möchten, und klicken Sie auf Auswählen.
  3. Die Datei wird validiert. Wenn die Validierung erfolgreich war, 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 „@“ und dem Dateinamen angeben.

Remote Config Personalisierungen und Bedingungen sind in heruntergeladenen Vorlagen enthalten. Beachten Sie daher die folgenden Einschränkungen, 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 in Ihrem Projekt Personalisierungen aktiviert haben und eine Vorlage herunterladen und bearbeiten, können Sie sie in demselben Projekt veröffentlichen. In einem anderen Projekt ist dies jedoch nur möglich, wenn Sie die Personalisierungen aus der Vorlage löschen.

  • Bedingungen können von einem Projekt in ein anderes importiert werden. Beachten Sie jedoch, dass alle spezifischen bedingten Werte (z. B. App-IDs oder Zielgruppen) vor der Veröffentlichung im Zielprojekt vorhanden sein müssen.

    Wenn Sie beispielsweise einen Remote Config-Parameter mit einer Bedingung haben, 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 die Vorlage 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 basieren, muss Analytics im Zielprojekt aktiviert sein.

Remote Config-Vorlage – Standardeinstellungen herunterladen

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

Wie in den platformspezifischen Links am Ende dieses Abschnitts beschrieben, können Sie diese Standardwerte manuell in Ihrer App festlegen. Sie können diesen Vorgang auch vereinfachen, 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. Sie können diese Datei dann in Ihr Projekt aufnehmen und Ihre App so konfigurieren, dass diese Werte importiert werden.

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

Wir empfehlen, vor jeder neuen App-Veröffentlichung regelmäßig die Remote Config-Standardeinstellungen herunterzuladen, damit Ihre App und das Remote Config-Backend immer 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 als format-Wert XML, PLIST oder JSON, je nachdem, welches Dateiformat Sie herunterladen möchten.

Firebase-Konsole

  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 Dateiformat, das Sie herunterladen möchten, und dann auf Datei herunterladen.

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