Ändern Sie Remote Config programmgesteuert

In diesem Dokument wird beschrieben, wie Sie den Satz JSON-formatierter Parameter und Bedingungen, die als Remote Config-Vorlage bezeichnet werden, programmgesteuert lesen und ändern können. Dadurch können Sie Vorlagenänderungen am Backend vornehmen, die die Client-App mithilfe der Client-Bibliothek abrufen kann.

Mit der Remote Config REST API oder den in diesem Handbuch beschriebenen Admin SDKs können Sie die Verwaltung der Vorlage in der Firebase-Konsole umgehen und Remote Config-Änderungen direkt in Ihre eigenen Prozesse integrieren. Mit Remote Config-Backend-APIs könnten Sie beispielsweise Folgendes tun:

  • Planen von Remote-Konfigurationsaktualisierungen . Durch die Verwendung von API-Aufrufen in Verbindung mit einem Cron-Job können Sie Remote-Konfigurationswerte regelmäßig ändern.
  • Importieren Sie Konfigurationswerte im Stapel , um einen effizienten Übergang von Ihrem eigenen proprietären System zu Firebase Remote Config zu ermöglichen.
  • Verwenden Sie Remote Config mit Cloud Functions für Firebase und ändern Sie Werte in Ihrer App basierend auf serverseitigen Ereignissen. Sie können beispielsweise Remote Config verwenden, um eine neue Funktion in Ihrer App zu bewerben, und diese Werbung dann automatisch deaktivieren, sobald Sie feststellen, dass genügend Personen mit der neuen Funktion interagiert haben.

    Diagramm, das die Interaktion des Remote Config-Backends mit benutzerdefinierten Tools und Servern zeigt

In den folgenden Abschnitten dieses Handbuchs werden Vorgänge beschrieben, die Sie mit den Remote Config-Backend-APIs ausführen können. Um Code zu überprüfen, der diese Aufgaben über die REST-API ausführt, sehen Sie sich eine dieser Beispiel-Apps an:

Ändern Sie die Remote-Konfiguration mit dem Firebase Admin SDK

Das Admin SDK besteht aus einer Reihe von Serverbibliotheken, mit denen Sie aus privilegierten Umgebungen mit Firebase interagieren können. Neben der Durchführung von Aktualisierungen der Remote-Konfiguration ermöglicht das Admin SDK die Generierung und Überprüfung von Firebase-Authentifizierungstokens, das Lesen und Schreiben aus der Echtzeitdatenbank usw. Weitere Informationen zu den Voraussetzungen und der Einrichtung des Admin SDK finden Sie unter Hinzufügen des Firebase Admin SDK zu Ihrem Server .

In einem typischen Remote-Konfigurationsablauf können Sie die aktuelle Vorlage abrufen, einige der Parameter oder Parametergruppen und Bedingungen ändern, die Vorlage validieren und sie dann veröffentlichen. Bevor Sie diese API-Aufrufe durchführen, müssen Sie Anfragen vom SDK autorisieren.

Initialisieren Sie das SDK und autorisieren Sie API-Anfragen

Wenn Sie das Admin-SDK ohne Parameter initialisieren, verwendet das SDK die Standardanmeldeinformationen für Google-Anwendungen und liest Optionen aus der Umgebungsvariablen FIREBASE_CONFIG . Wenn der Inhalt der Variablen FIREBASE_CONFIG mit einem { beginnt, wird er als JSON-Objekt geparst. Andernfalls geht das SDK davon aus, dass es sich bei der Zeichenfolge um den Namen einer JSON-Datei handelt, die die Optionen enthält.

Zum Beispiel:

Node.js

const admin = require('firebase-admin');
admin.initializeApp();

Java

FileInputStream serviceAccount = new FileInputStream("service-account.json");
FirebaseOptions options = FirebaseOptions.builder()
        .setCredentials(GoogleCredentials.fromStream(serviceAccount))
        .build();
FirebaseApp.initializeApp(options);

Holen Sie sich die aktuelle Remote-Konfigurationsvorlage

Beachten Sie bei der Arbeit mit Remote-Konfigurationsvorlagen, dass diese versioniert sind und dass jede Version vom Zeitpunkt ihrer Erstellung bis zu dem Zeitpunkt, an dem Sie sie durch ein Update ersetzen, eine begrenzte Lebensdauer hat: 90 Tage, mit einem Gesamtlimit von 300 gespeicherten Versionen. Weitere Informationen finden Sie unter Vorlagen und Versionierung .

Sie können die Backend-APIs verwenden, um die aktuell aktive Version der Remote Config-Vorlage im JSON-Format abzurufen.

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

So erhalten Sie die Vorlage:

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

Ändern Sie die Remote-Konfigurationsparameter

Sie können Remote Config-Parameter und Parametergruppen programmgesteuert ändern und hinzufügen. Beispielsweise könnten Sie einer vorhandenen Parametergruppe mit dem Namen „new_menu“ einen Parameter hinzufügen, um die Anzeige saisonaler Informationen zu steuern:

Node.js

function addParameterToGroup(template) {
  template.parameterGroups['new_menu'].parameters['spring_season'] = {
    defaultValue: {
      useInAppDefault: true
    },
    description: 'spring season menu visibility.',
  };
}

Java

template.getParameterGroups().get("new_menu").getParameters()
        .put("spring_season", new Parameter()
                .setDefaultValue(ParameterValue.inAppDefault())
                .setDescription("spring season menu visibility.")
        );

Mit der API können Sie neue Parameter und Parametergruppen erstellen oder Standardwerte, bedingte Werte und Beschreibungen ändern. In jedem Fall müssen Sie die Vorlage explizit veröffentlichen, nachdem Sie Änderungen vorgenommen haben.

Ändern Sie die Remote-Konfigurationsbedingungen

Sie können Remote Config-Bedingungen und Bedingungswerte programmgesteuert ändern und hinzufügen. So fügen Sie beispielsweise eine neue Bedingung hinzu:

Node.js

function addNewCondition(template) {
  template.conditions.push({
    name: 'android_en',
    expression: 'device.os == \'android\' && device.country in [\'us\', \'uk\']',
    tagColor: 'BLUE',
  });
}

Java

template.getConditions().add(new Condition("android_en",
        "device.os == 'android' && device.country in ['us', 'uk']", TagColor.BLUE));

In jedem Fall müssen Sie die Vorlage explizit veröffentlichen, nachdem Sie Änderungen vorgenommen haben.

Die Remote Config-Backend-APIs stellen mehrere Bedingungen und Vergleichsoperatoren bereit, mit denen Sie das Verhalten und Erscheinungsbild Ihrer App ändern können. Weitere Informationen zu Bedingungen und den für diese Bedingungen unterstützten Operatoren finden Sie in der Referenz zu bedingten Ausdrücken .

Validieren Sie die Remote-Konfigurationsvorlage

Optional können Sie Ihre Aktualisierungen vor der Veröffentlichung validieren, wie gezeigt:

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

Dieser Validierungsprozess 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.

Veröffentlichen Sie die Remote-Konfigurationsvorlage

Nachdem Sie eine Vorlage abgerufen und mit den gewünschten Aktualisierungen überarbeitet haben, können Sie sie veröffentlichen. Durch das Veröffentlichen einer Vorlage wie in diesem Abschnitt beschrieben wird die gesamte vorhandene Konfigurationsvorlage durch die aktualisierte Datei ersetzt, und der neuen aktiven Vorlage wird eine Versionsnummer zugewiesen, die um eine Nummer höher ist als die der Vorlage, die sie ersetzt hat.

Bei Bedarf können Sie die REST-API verwenden, um ein Rollback zur vorherigen Version durchzuführen . Um das Risiko von Fehlern bei einem Update zu verringern, können Sie vor der Veröffentlichung eine Validierung durchführen .

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.

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

Ändern Sie die Remote-Konfiguration mithilfe der REST-API

In diesem Abschnitt werden die Hauptfunktionen der Remote Config REST API unter https://firebaseremoteconfig.googleapis.com beschrieben. Ausführliche Informationen finden Sie in der API-Referenz .

Holen Sie sich ein Zugriffstoken, um API-Anfragen zu authentifizieren und zu autorisieren

Firebase-Projekte unterstützen Google- Dienstkonten , mit denen Sie Firebase-Server-APIs von Ihrem App-Server oder Ihrer vertrauenswürdigen Umgebung aus aufrufen können. Wenn Sie Code lokal entwickeln oder Ihre Anwendung lokal bereitstellen, können Sie die über dieses Dienstkonto erhaltenen Anmeldeinformationen verwenden, um Serveranfragen zu autorisieren.

Um ein Dienstkonto zu authentifizieren und es für den Zugriff auf Firebase-Dienste zu autorisieren, müssen Sie eine private Schlüsseldatei im JSON-Format generieren.

So generieren Sie eine private Schlüsseldatei für Ihr Dienstkonto:

  1. Öffnen Sie in der Firebase-Konsole Einstellungen > Dienstkonten .

  2. Klicken Sie auf „Neuen privaten Schlüssel generieren“ und bestätigen Sie dann, indem Sie auf „Schlüssel generieren“ klicken.

  3. Speichern Sie die JSON-Datei, die den Schlüssel enthält, sicher.

Bei der Autorisierung über ein Dienstkonto haben Sie zwei Möglichkeiten, die Anmeldeinformationen für Ihre Anwendung bereitzustellen. Sie können entweder die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS festlegen oder den Pfad zum Dienstkontoschlüssel explizit im Code übergeben. Die erste Option ist sicherer und wird dringend empfohlen.

So legen Sie die Umgebungsvariable fest:

Legen Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS auf den Dateipfad der JSON-Datei fest, die Ihren Dienstkontoschlüssel enthält. Diese Variable gilt nur für Ihre aktuelle Shell-Sitzung. Wenn Sie also eine neue Sitzung öffnen, legen Sie die Variable erneut fest.

Linux oder macOS

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

Windows

Mit PowerShell:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"

Nachdem Sie die oben genannten Schritte ausgeführt haben, kann Application Default Credentials (ADC) Ihre Anmeldeinformationen implizit ermitteln, sodass Sie beim Testen oder Ausführen in Nicht-Google-Umgebungen Dienstkonto-Anmeldeinformationen verwenden können.

Verwenden Sie Ihre Firebase-Anmeldeinformationen zusammen mit der Google Auth Library für Ihre bevorzugte Sprache, um ein kurzlebiges OAuth 2.0-Zugriffstoken abzurufen:

node.js

 function getAccessToken() {
  return admin.credential.applicationDefault().getAccessToken()
      .then(accessToken => {
        return accessToken.access_token;
      })
      .catch(err => {
        console.error('Unable to get access token');
        console.error(err);
      });
}

In diesem Beispiel authentifiziert die Google API-Clientbibliothek die Anfrage mit einem JSON-Web-Token oder JWT. Weitere Informationen finden Sie unter JSON-Web-Tokens .

Python

def _get_access_token():
  """Retrieve a valid access token that can be used to authorize requests.

  :return: Access token.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      'service-account.json', SCOPES)
  access_token_info = credentials.get_access_token()
  return access_token_info.access_token

Java

public static String getAccessToken() throws IOException {
  GoogleCredentials googleCredentials = GoogleCredentials
          .fromStream(new FileInputStream("service-account.json"))
          .createScoped(Arrays.asList(SCOPES));
  googleCredentials.refreshAccessToken();
  return googleCredentials.getAccessToken().getTokenValue();
}

Nachdem Ihr Zugriffstoken abgelaufen ist, wird die Token-Aktualisierungsmethode automatisch aufgerufen, um ein aktualisiertes Zugriffstoken abzurufen.

Um den Zugriff auf Remote Config zu autorisieren, fordern Sie den Bereich https://www.googleapis.com/auth/firebase.remoteconfig an.

Ändern Sie die Remote-Konfigurationsvorlage

Beachten Sie bei der Arbeit mit Remote-Konfigurationsvorlagen, dass diese versioniert sind und dass jede Version vom Zeitpunkt ihrer Erstellung bis zu dem Zeitpunkt, an dem Sie sie durch ein Update ersetzen, eine begrenzte Lebensdauer hat: 90 Tage, mit einem Gesamtlimit von 300 gespeicherten Versionen. Weitere Informationen finden Sie unter Vorlagen und Versionierung .

Holen Sie sich die aktuelle Remote-Konfigurationsvorlage

Sie können die Backend-APIs verwenden, um die aktuell aktive Version der Remote Config-Vorlage im JSON-Format abzurufen.

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

Verwenden Sie die folgenden Befehle:

cURL

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 Datei aus.

Rohe HTTP-Anfrage

Host: firebaseremoteconfig.googleapis.com

GET /v1/projects/my-project-id/remoteConfig HTTP/1.1
Authorization: Bearer token
Accept-Encoding: gzip

Dieser API-Aufruf gibt das folgende JSON zusammen mit einem separaten Header zurück, der ein ETag enthält, das Sie für die nachfolgende Anfrage verwenden.

Validieren Sie die Remote-Konfigurationsvorlage

Optional können Sie Ihre Aktualisierungen vor der Veröffentlichung validieren. Validieren Sie Vorlagenaktualisierungen, indem Sie an Ihre Veröffentlichungsanforderung den URL-Parameter ?validate_only=true anhängen. In der Antwort bedeuten ein Statuscode 200 und ein aktualisiertes Etag mit dem Suffix -0 , dass Ihr Update erfolgreich validiert wurde. Jede Antwort, die nicht 200 beträgt, weist darauf hin, dass die JSON-Daten Fehler enthalten, die Sie vor der Veröffentlichung korrigieren müssen.

Aktualisieren Sie die Remote-Konfigurationsvorlage

Nachdem Sie eine Vorlage abgerufen und den JSON-Inhalt mit den gewünschten Aktualisierungen überarbeitet haben, können Sie ihn dann veröffentlichen. Durch das Veröffentlichen einer Vorlage wie in diesem Abschnitt beschrieben wird die gesamte vorhandene Konfigurationsvorlage durch die aktualisierte Datei ersetzt, und der neuen aktiven Vorlage wird eine Versionsnummer zugewiesen, die um eine Nummer höher ist als die der Vorlage, die sie ersetzt hat.

Bei Bedarf können Sie die REST-API verwenden, um ein Rollback zur vorherigen Version durchzuführen . Um das Risiko von Fehlern bei einem Update zu verringern, können Sie vor der Veröffentlichung eine Validierung durchführen .

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.

cURL

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.

Rohe HTTP-Anfrage

Host: firebaseremoteconfig.googleapis.com
PUT /v1/projects/my-project-id/remoteConfig HTTP/1.1
Content-Length: size
Content-Type: application/json; UTF8
Authorization: Bearer token
If-Match: expected ETag
Accept-Encoding: gzip
JSON_HERE

Da es sich um eine Schreibanforderung handelt, wird das ETag durch diesen Befehl geändert und ein aktualisiertes ETag wird in den Antwortheadern des nächsten PUT Befehls bereitgestellt.

Ändern Sie die Remote-Konfigurationsbedingungen

Sie können Remote Config-Bedingungen und Bedingungswerte programmgesteuert ändern. Mit der REST-API müssen Sie die Vorlage direkt bearbeiten, um Bedingungen zu ändern, bevor Sie die Vorlage veröffentlichen.

{
  "conditions": [{
    "name": "android_english",
    "expression": "device.os == 'android' && device.country in ['us', 'uk']",
    "tagColor": "BLUE"
  }, {
    "name": "tenPercent",
    "expression": "percent <= 10",
    "tagColor": "BROWN"
  }],
  "parameters": {
    "welcome_message": {
      "defaultValue": {
        "value": "Welcome to this sample app"
      },
      "conditionalValues": {
        "tenPercent": {
          "value": "Welcome to this new sample app"
        }
      },
      "description": "The sample app's welcome message"
    },
    "welcome_message_caps": {
      "defaultValue": {
        "value": "false"
      },
      "conditionalValues": {
        "android_english": {
          "value": "true"
        }
      },
      "description": "Whether the welcome message should be displayed in all capital letters."
    }
  }
}

Die oben genannten Änderungen definieren zunächst eine Reihe von Bedingungen und definieren dann Standardwerte und bedingungsbasierte Parameterwerte ( Bedingungswerte ) für jeden Parameter. Außerdem wird für jedes Element eine optionale Beschreibung hinzugefügt. Diese sind wie Codekommentare für die Verwendung durch Entwickler bestimmt und werden nicht in der App angezeigt. Zur Versionskontrolle wird außerdem ein ETag bereitgestellt.

Die Remote Config-Backend-APIs stellen mehrere Bedingungen und Vergleichsoperatoren bereit, mit denen Sie das Verhalten und Erscheinungsbild Ihrer App ändern können. Weitere Informationen zu Bedingungen und den für diese Bedingungen unterstützten Operatoren finden Sie in der Referenz zu bedingten Ausdrücken .

HTTP-Fehlercodes

Statuscode Bedeutung
200 Erfolgreich aktualisiert
400 Es ist ein Validierungsfehler aufgetreten. Beispielsweise würde eine Anfrage, die mehr als die zulässige Anzahl von Schlüsseln (2000) enthält, 400 (Bad Request) mit der Fehlermeldung Param count too large zurückgeben. Außerdem kann dieser HTTPS-Statuscode in den folgenden beiden Situationen auftreten:
  • Es ist ein Versionskonfliktfehler aufgetreten, weil der Satz an Werten und Bedingungen aktualisiert wurde, seit Sie das letzte Mal einen ETag-Wert abgerufen haben. Um dieses Problem zu beheben, sollten Sie einen GET Befehl verwenden, um eine neue Vorlage und einen neuen ETag-Wert abzurufen, die Vorlage zu aktualisieren und dann mit dieser Vorlage und dem neuen ETag-Wert zu übermitteln.
  • Ein PUT Befehl (Remote-Konfigurationsvorlagenanforderung aktualisieren) wurde ohne Angabe eines If-Match Headers durchgeführt.
401 Es ist ein Autorisierungsfehler aufgetreten (es wurde kein Zugriffstoken bereitgestellt oder die Firebase Remote Config REST API wurde nicht zu Ihrem Projekt in der Cloud Developer Console hinzugefügt).
403 Es ist ein Authentifizierungsfehler aufgetreten (es wurde das falsche Zugriffstoken bereitgestellt).
500 Ein interner Fehler ist aufgetreten. Wenn dieser Fehler auftritt, reichen Sie ein Firebase-Supportticket ein

Ein Statuscode von 200 bedeutet, dass die Remote Config-Vorlage (Parameter, Werte und Bedingungen für das Projekt) aktualisiert wurde und nun für Apps verfügbar ist, die dieses Projekt verwenden. Andere Statuscodes weisen darauf hin, dass die zuvor vorhandene Remote-Konfigurationsvorlage noch in Kraft ist.

Nachdem Sie Aktualisierungen an Ihrer Vorlage übermittelt haben, gehen Sie zur Firebase-Konsole, um zu überprüfen, ob Ihre Änderungen wie erwartet angezeigt werden. Dies ist wichtig, da die Reihenfolge der Bedingungen Auswirkungen darauf hat, wie sie ausgewertet werden (die erste Bedingung, die true ausgewertet wird, wird wirksam).

ETag-Nutzung und erzwungene Updates

Die Remote Config REST API verwendet ein Entity-Tag (ETag), um Race Conditions und überlappende Aktualisierungen von Ressourcen zu verhindern. Weitere Informationen zu ETags finden Sie unter ETag – HTTP .

Für die REST-API empfiehlt Google, dass Sie das vom letzten GET Befehl bereitgestellte ETag zwischenspeichern und diesen ETag-Wert im If-Match Anfrageheader verwenden, wenn Sie PUT Befehle ausgeben. Wenn Ihr PUT Befehl zu einem HTTPS-Statuscode 409 führt, sollten Sie einen neuen GET Befehl ausgeben, um ein neues ETag und eine neue Vorlage zu erhalten, die Sie mit Ihrem nächsten PUT Befehl verwenden können.

Sie können das ETag und den Schutz, den es bietet, umgehen, indem Sie die Aktualisierung der Remote Config-Vorlage wie folgt erzwingen: If-Match: * Dieser Ansatz wird jedoch nicht empfohlen, da das Risiko besteht, dass Aktualisierungen Ihrer Remote Config verloren gehen Vorlage, wenn mehrere Clients die Remote Config-Vorlage aktualisieren. Diese Art von Konflikt kann auftreten, wenn mehrere Clients die API verwenden, oder wenn Updates von API-Clients und Firebase-Konsolenbenutzern widersprüchlich sind.

Anleitungen zum Verwalten von Remote Config-Vorlagenversionen finden Sie unter Remote Config-Vorlagen und Versionierung .