Remote-Konfigurationsvorlagen und Versionierung

Die Remote Config-Vorlage ist der serverseitige Satz JSON-formatierter Parameter und Bedingungen, die Sie für Ihr Firebase-Projekt erstellt haben. Sie können die Vorlage mithilfe der Firebase-Konsole ändern und verwalten, die den Inhalt der Vorlage im grafischen Format auf den Registerkarten „Parameter “ und „Bedingungen“ anzeigt. Sie können Ihre Konfiguration auch mit der Remote Config REST API und dem Admin SDK oder der Firebase CLI ändern und verwalten.

Hier ist ein Beispiel für eine Vorlagendatei:

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

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. Versionsnummern werden sequentiell ausgehend vom von Remote Config gespeicherten Anfangswert erhöht. Alle Vorlagen enthalten wie gezeigt ein version , das Metadaten zu dieser spezifischen Version enthält.

Mit der Firebase-Konsole, der Firebase-CLI oder den Remote Config-Backend-APIs können Sie diese Versionsverwaltungsaufgaben ausführen:

  • Listen Sie alle gespeicherten Vorlagenversionen auf
  • Rufen Sie eine bestimmte Version ab
  • Führen Sie ein Rollback auf eine bestimmte Version durch

Sie können Remote Config-Vorlagen bei Bedarf über die Seite „Änderungsverlauf“ in der Remote Config-Konsole löschen. Es gibt ein Gesamtlimit von 300 lebenslang gespeicherten Versionen, einschließlich gespeicherter Versionsnummern für gelöschte Vorlagen. Wenn Sie während der Laufzeit eines Projekts mehr als 300 Vorlagenversionen veröffentlichen, werden die frühesten Versionen gelöscht, sodass maximal 300 Versionen erhalten bleiben.

Verwalten Sie Remote Config-Vorlagenversionen

In diesem Abschnitt wird beschrieben, wie Sie Versionen Ihrer Remote Config-Vorlage verwalten. Weitere Einzelheiten zum programmgesteuerten Erstellen, Ändern und Speichern von Vorlagen finden Sie unter Remote-Konfiguration programmgesteuert ändern .

Listen Sie alle gespeicherten Versionen der Remote Config-Vorlage auf

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

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

AUSRUHEN

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

Firebase-Konsole

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

Zu den für jede gespeicherte Version angezeigten Details gehören Informationen darüber, ob die Änderungen von der Konsole, mit der REST-API, von einem Rollback stammen oder ob es sich um inkrementelle Änderungen aus einer erzwungenen Speicherung der Vorlage handelte.

Firebase-CLI

firebase remoteconfig:versions:list

Verwenden Sie die Option --limit , um die Anzahl der zurückgegebenen Versionen zu begrenzen. Übergeben Sie „0“, um alle Versionen abzurufen.

Die Liste der Vorlagen enthält Metadaten für alle gespeicherten Versionen, einschließlich des Zeitpunkts des Updates, des Benutzers, der es erstellt hat, und ob es über die Konsole oder die REST-API erstellt wurde. Hier ist ein Beispiel für ein Versionselement:

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

Rufen Sie eine bestimmte Version der Remote Config-Vorlage ab

Sie können jede bestimmte gespeicherte Version der Remote Config-Vorlage abrufen. Zum Beispiel:

Node.js

Übergeben Sie getTemplate() ohne Argumente, um die neueste Version der Vorlage abzurufen. Um eine bestimmte Version abzurufen, 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());

AUSRUHEN

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.

Firebase-Konsole

Standardmäßig wird im Detailbereich der Registerkarte „Änderungsverlauf“ die aktuell aktive Vorlage angezeigt. Um Details für eine andere Version in der Liste anzuzeigen, wählen Sie diese im rechten Menü aus.

Sie können einen detaillierten Unterschied zwischen der aktuell ausgewählten Version und jeder anderen gespeicherten Version anzeigen, indem Sie den Mauszeiger über das Kontextmenü einer nicht ausgewählten Version bewegen und „Mit ausgewählter Version vergleichen“ auswählen.

Firebase-CLI

firebase remoteconfig:get -v VERSION_NUMBER

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

Führen Sie ein Rollback auf eine bestimmte gespeicherte Version der Remote-Konfigurationsvorlage durch

Sie können zu jeder gespeicherten Version der Vorlage zurückkehren. Zum Beispiel:

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

AUSRUHEN

Um ein Rollback auf eine gespeicherte Remote-Konfigurationsvorlage durchzuführen, geben Sie einen HTTP-POST mit der benutzerdefinierten Methode :rollback und im Anforderungstext der spezifischen anzuwendenden Version aus. Zum 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.

Firebase-Konsole

Für frühere Vorlagenversionen, die für ein Rollback in Frage kommen, wird oben rechts auf der Seite „Änderungsverlauf“ eine Optionsschaltfläche zum Zurücksetzen auf diese Version angezeigt. Klicken und bestätigen Sie dies nur, wenn Sie sicher sind, dass Sie auf diese Version zurücksetzen und diese Werte sofort für alle Apps und Benutzer verwenden möchten.

Firebase-CLI

firebase remoteconfig:rollback -v VERSION_NUMBER

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

Löschen Sie eine Remote-Konfigurationsvorlage

Sie können Remote-Konfigurationsvorlagen aus der Firebase-Konsole löschen. So löschen Sie eine Remote-Konfigurationsvorlage:

  1. Klicken Sie auf der Seite „Remote- Konfigurationsparameter“ auf Änderungsverlauf .

  2. Wechseln Sie zu der Vorlage, die Sie löschen möchten, klicken Sie auf „ und wählen Sie dann „Löschen“ aus.

  3. Wenn Sie aufgefordert werden, den Löschvorgang zu bestätigen, klicken Sie auf Löschen .

Laden Sie Remote-Konfigurationsvorlagen herunter und veröffentlichen Sie sie

Laden Sie Remote-Konfigurationsvorlagen herunter und veröffentlichen Sie sie, um sie in Ihre Quellcodeverwaltungs- und Build-Systeme zu integrieren, Konfigurationsaktualisierungen zu automatisieren und Parameter und Werte über mehrere Projekte hinweg synchron zu halten.

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

Nehmen wir an, Sie haben mehrere Projekte, die unterschiedliche Phasen Ihres Softwareentwicklungslebenszyklus darstellen, z. B. Entwicklungs-, Test-, Staging- und Produktionsumgebungen. In diesem Fall könnten Sie eine vollständig getestete Vorlage aus Ihrer Staging-Umgebung in Ihre Produktionsumgebung hochstufen, 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-Testexperiment erstellt wurden, sind nicht in exportierten Vorlagen enthalten.

So exportieren und importieren Sie Remote-Konfigurationsvorlagen:

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

Laden Sie die aktuelle Remote-Konfigurationsvorlage herunter

Sie können die aktuelle und aktive Remote Config-Vorlage programmgesteuert oder über die Firebase-Konsole herunterladen.

Verwenden Sie die folgenden Befehle, um die aktive Remote Config-Vorlage im JSON-Format herunterzuladen:

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

AUSRUHEN

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

Dieser Befehl gibt die JSON-Nutzlast in eine Datei und die Header (einschließlich ETag) in eine separate headers Datei aus.

Firebase-Konsole

  1. Öffnen Sie auf der Registerkarte „Remote-Konfigurationsparameter oder -Bedingungen“ das Menü “ und wählen Sie „Aktuelle Konfigurationsdatei herunterladen“ aus.
  2. Wenn Sie dazu aufgefordert werden, 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

Validieren Sie die Remote-Konfigurationsvorlage

Sie können Ihre Vorlagenaktualisierungen validieren, bevor Sie sie mithilfe des Firebase Admin SDK oder der REST-API veröffentlichen. Vorlagen werden auch validiert, wenn Sie versuchen, über die Firebase-CLI oder die Firebase-Konsole zu veröffentlichen.

Der Vorlagenvalidierungsprozess prüft auf Fehler wie doppelte Schlüssel für Parameter und Bedingungen, ungültige Bedingungsnamen oder nicht vorhandene Bedingungen oder falsch formatierte ETags. Beispielsweise würde eine Anfrage, die mehr als die zulässige Anzahl von Schlüsseln (2000) enthält, die Fehlermeldung Param count too large zurückgeben.

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

AUSRUHEN

Validieren Sie Vorlagenaktualisierungen, indem Sie den URL-Parameter ?validate_only=true an Ihre Veröffentlichungsanfrage 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 Befehl „curl“ die von Ihnen übermittelte JSON-Vorlage zurück und in der gespeicherten headers finden Sie einen 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 Nicht-200-Antwort (und kein ETag).

Veröffentlichen Sie die Remote-Konfigurationsvorlage

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

Durch das 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 veröffentlichen.

Nach der Veröffentlichung stehen Änderungen an Parametern und Werten Ihren Apps und Benutzern sofort zur Verfügung. Bei Bedarf können Sie ein Rollback auf eine frühere Version durchführen.

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

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

AUSRUHEN

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 angeben, indem Sie das Zeichen „@“ gefolgt vom Dateinamen verwenden.

Firebase-Konsole

  1. Öffnen Sie auf der Registerkarte „Remote-Konfigurationsparameter oder -Bedingungen“ das Menü “ und wählen Sie „Aus einer Datei veröffentlichen“ aus.
  2. Wenn Sie dazu aufgefordert werden, klicken Sie auf „ Durchsuchen“ , navigieren Sie zu der Remote-Konfigurationsdatei, die Sie veröffentlichen möchten, wählen Sie sie aus und klicken Sie dann auf „Auswählen“ .
  3. Die Datei wird validiert und bei Erfolg können Sie auf „Veröffentlichen“ klicken, um die Konfiguration sofort für Ihre Apps und Benutzer verfügbar zu machen.

Personalisierungen und Bedingungen für die Remote-Konfiguration sind in den heruntergeladenen Vorlagen enthalten. Daher ist es wichtig, die folgenden Einschränkungen zu beachten, wenn Sie versuchen, sie in einem anderen Projekt zu veröffentlichen:

  • Personalisierungen können nicht von Projekt zu Projekt 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, aber Sie können sie nicht in einem anderen Projekt veröffentlichen, es sei denn, Sie löschen die Personalisierungen aus der Vorlage.

  • Bedingungen können von Projekt zu Projekt importiert werden. Beachten Sie jedoch, dass alle spezifischen Bedingungswerte (z. B. App-IDs oder Zielgruppen) vor der Veröffentlichung im Zielprojekt vorhanden sein sollten.

    Wenn Sie beispielsweise über einen Remote-Config-Parameter verfügen, der eine Bedingung verwendet, die den Plattformwert iOS angibt, kann die Vorlage in einem anderen Projekt veröffentlicht werden, da die Plattformwerte für jedes Projekt gleich sind. Wenn es jedoch eine Bedingung enthält, die auf einer bestimmten App-ID oder Benutzergruppe 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.

Laden Sie die Standardeinstellungen der Remote Config-Vorlage herunter

Da Ihre App möglicherweise nicht immer mit dem Internet verbunden ist, sollten Sie clientseitige App-Standardwerte für alle Remote Config-Parameter konfigurieren. Sie sollten außerdem regelmäßig die Standardwerte Ihres App-Clients und die Standardparameterwerte des Remote Config-Backends synchronisieren, da diese 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 oder diesen Prozess optimieren, indem Sie Dateien herunterladen, die nur die Schlüssel-Wert-Paare für alle Parameter und deren Standardwerte in der App enthalten aktive Remote-Konfigurationsvorlage. Sie können diese Datei dann in Ihr Projekt einbinden und Ihre App so konfigurieren, dass sie diese Werte importiert.

Sie können diese Dateien im XML-Format für Android-Apps, im Eigenschaftenlistenformat (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, um sicherzustellen, dass Ihre App und das Remote Config-Backend synchron bleiben.

So laden Sie eine Datei herunter, die Vorlagenstandards enthält:

AUSRUHEN

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 format , je nachdem, welches Dateiformat Sie herunterladen möchten.

Firebase-Konsole

  1. Öffnen Sie auf der Registerkarte „Parameter“ das Menü und wählen Sie „Standardwerte herunterladen“ aus.
  2. Wenn Sie dazu aufgefordert werden, klicken Sie auf das Optionsfeld für das Dateiformat, das Sie herunterladen möchten, und klicken Sie dann auf Datei herunterladen .

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