Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Programowa modyfikacja Zdalnej konfiguracji

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

W tym dokumencie opisano, w jaki sposób można programowo odczytywać i modyfikować zestaw parametrów i warunków w formacie JSON, znanych jako szablon zdalnej konfiguracji . Dzięki temu możesz wprowadzać zmiany szablonu w zapleczu, które aplikacja kliencka może pobrać przy użyciu biblioteki klienta.

Korzystając z interfejsu Remote Config REST API lub pakietów Admin SDK opisanych w tym przewodniku, możesz pominąć zarządzanie szablonem w konsoli Firebase, aby bezpośrednio zintegrować zmiany Zdalnej konfiguracji z własnymi procesami. Na przykład za pomocą interfejsów API backendu Remote Config możesz:

  • Planowanie aktualizacji Zdalnej konfiguracji . Używając wywołań API w połączeniu z zadaniem cron, możesz regularnie zmieniać wartości Zdalnej konfiguracji.
  • Importuj zbiorczo wartości konfiguracji , aby skutecznie przejść z własnego systemu do zdalnej konfiguracji Firebase.
  • Używaj Zdalnej konfiguracji z Cloud Functions dla Firebase , zmieniając wartości w swojej aplikacji na podstawie zdarzeń zachodzących po stronie serwera. Na przykład możesz użyć Zdalnej konfiguracji, aby promować nową funkcję w swojej aplikacji, a następnie automatycznie wyłączyć tę promocję po wykryciu wystarczającej liczby osób, która weszła w interakcję z nową funkcją.

    Diagram przedstawiający interakcję backendu Remote Config z niestandardowymi narzędziami i serwerami

W poniższych sekcjach tego przewodnika opisano operacje, które można wykonać za pomocą interfejsów API zaplecza Remote Config. Aby przejrzeć kod, który wykonuje te zadania za pośrednictwem interfejsu API REST, zobacz jedną z tych przykładowych aplikacji:

Modyfikuj Zdalną konfigurację za pomocą pakietu Firebase Admin SDK

Admin SDK to zestaw bibliotek serwerowych, które umożliwiają interakcję z Firebase z uprzywilejowanych środowisk. Oprócz przeprowadzania aktualizacji Zdalnej konfiguracji pakiet Admin SDK umożliwia generowanie i weryfikację tokenów uwierzytelniania Firebase, odczytywanie i zapisywanie z Bazy danych czasu rzeczywistego itd. Aby dowiedzieć się więcej o wymaganiach wstępnych i konfiguracji pakietu Admin SDK, zobacz Dodawanie pakietu Firebase Admin SDK do serwera .

W typowym przepływie Zdalnej konfiguracji można uzyskać bieżący szablon, zmodyfikować niektóre parametry lub grupy parametrów i warunki, sprawdzić poprawność szablonu, a następnie go opublikować. Przed wykonaniem tych wywołań API musisz autoryzować żądania z SDK.

Zainicjuj SDK i autoryzuj żądania API

Gdy inicjujesz pakiet Admin SDK bez parametrów, pakiet SDK używa domyślnych poświadczeń aplikacji Google i odczytuje opcje ze zmiennej środowiskowej FIREBASE_CONFIG . Jeśli zawartość zmiennej FIREBASE_CONFIG zaczyna się od { , zostanie przetworzona jako obiekt JSON. W przeciwnym razie zestaw SDK zakłada, że ​​ciąg jest nazwą pliku JSON zawierającego opcje.

Na przykład:

Node.js

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

Jawa

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

Pobierz aktualny szablon zdalnej konfiguracji

Podczas pracy z szablonami Zdalnej konfiguracji należy pamiętać, że są one wersjonowane oraz że każda wersja ma ograniczony czas życia od momentu utworzenia do momentu zastąpienia jej aktualizacją: 90 dni, przy łącznym limicie 300 przechowywanych wersji. Zobacz Szablony i wersjonowanie , aby uzyskać więcej informacji.

Możesz użyć interfejsów API zaplecza, aby pobrać bieżącą aktywną wersję szablonu Zdalnej konfiguracji w formacie JSON.

Parametry i wartości parametrów utworzone specjalnie jako warianty w eksperymencie testowania A/B nie są uwzględniane w eksportowanych szablonach.

Aby pobrać szablon:

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

Jawa

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

Zmodyfikuj parametry zdalnej konfiguracji

Można programowo modyfikować i dodawać parametry i grupy parametrów Zdalnej konfiguracji. Na przykład do istniejącej grupy parametrów o nazwie "nowe_menu" można dodać parametr do sterowania wyświetlaniem informacji sezonowych:

Node.js

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

Jawa

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

Interfejs API umożliwia tworzenie nowych parametrów i grup parametrów lub modyfikowanie wartości domyślnych, wartości warunkowych i opisów. We wszystkich przypadkach musisz jawnie opublikować szablon po dokonaniu modyfikacji.

Zmodyfikuj warunki zdalnej konfiguracji

Możesz programowo modyfikować i dodawać warunki i wartości warunkowe Zdalnej konfiguracji. Na przykład, aby dodać nowy warunek:

Node.js

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

Jawa

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

We wszystkich przypadkach musisz jawnie opublikować szablon po dokonaniu modyfikacji.

Interfejsy API zaplecza Zdalnej konfiguracji udostępniają kilka warunków i operatorów porównania, których można użyć do zmiany zachowania i wyglądu aplikacji. Aby dowiedzieć się więcej o warunkach i operatorach obsługiwanych dla tych warunków, zapoznaj się z dokumentacją wyrażeń warunkowych .

Sprawdź poprawność szablonu Zdalnej konfiguracji

Opcjonalnie możesz sprawdzić poprawność aktualizacji przed ich opublikowaniem, jak pokazano:

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

Jawa

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

Ten proces sprawdzania poprawności sprawdza, czy nie ma błędów, takich jak zduplikowane klucze parametrów i warunków, nieprawidłowe nazwy warunków lub nieistniejące warunki lub niepoprawnie sformatowane tagi etag. Na przykład żądanie zawierające więcej niż dozwoloną liczbę kluczy — 2000 — zwróci komunikat o błędzie, Param count too large .

Opublikuj szablon Zdalnej konfiguracji

Po pobraniu szablonu i poprawieniu go z żądanymi aktualizacjami możesz go opublikować. Opublikowanie szablonu zgodnie z opisem w tej sekcji powoduje zastąpienie całego istniejącego szablonu konfiguracji zaktualizowanym plikiem, a nowy aktywny szablon otrzymuje numer wersji o jeden większy niż szablon, który został zastąpiony.

W razie potrzeby możesz użyć interfejsu API REST, aby przywrócić poprzednią wersję . Aby zmniejszyć ryzyko błędów w aktualizacji, możesz sprawdzić poprawność przed opublikowaniem .

Personalizacja i warunki Zdalnej konfiguracji są zawarte w pobranych szablonach, dlatego podczas próby publikowania w innym projekcie należy pamiętać o następujących ograniczeniach:

  • Personalizacji nie można importować z projektu do projektu.

    Na przykład, jeśli masz włączone personalizacje w swoim projekcie oraz pobierasz i edytujesz szablon, możesz opublikować go w tym samym projekcie, ale nie możesz opublikować go w innym projekcie, chyba że usuniesz personalizacje z szablonu.

  • Warunki można importować z projektu do projektu, ale należy pamiętać, że wszelkie określone wartości warunkowe (takie jak identyfikatory aplikacji lub grupy odbiorców) powinny istnieć w projekcie docelowym przed opublikowaniem.

    Na przykład jeśli masz parametr zdalnej konfiguracji, który używa warunku określającego wartość platformy iOS , szablon można opublikować w innym projekcie, ponieważ wartości platformy są takie same dla każdego projektu. Jeśli jednak zawiera warunek, który opiera się na określonym identyfikatorze aplikacji lub odbiorcach użytkowników, którzy nie istnieją w projekcie docelowym, weryfikacja zakończy się niepowodzeniem.

  • Jeśli szablon, który planujesz opublikować, zawiera warunki, które opierają się na Google Analytics, Analytics musi być włączone w projekcie docelowym.

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

Jawa

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

Modyfikuj Zdalną konfigurację za pomocą REST API

W tej sekcji opisano główne możliwości interfejsu API REST Remote Config pod https://firebaseremoteconfig.googleapis.com . Aby uzyskać szczegółowe informacje, zobacz dokumentację interfejsu API .

Uzyskaj token dostępu do uwierzytelniania i autoryzacji żądań API

Projekty Firebase obsługują konta usług Google , których można używać do wywoływania interfejsów API serwera Firebase z serwera aplikacji lub zaufanego środowiska. Jeśli tworzysz kod lokalnie lub wdrażasz aplikację lokalnie, możesz użyć poświadczeń uzyskanych za pośrednictwem tego konta usługi, aby autoryzować żądania serwera.

Aby uwierzytelnić konto usługi i upoważnić je do dostępu do usług Firebase, musisz wygenerować plik klucza prywatnego w formacie JSON.

Aby wygenerować plik klucza prywatnego dla konta usługi:

  1. W konsoli Firebase otwórz Ustawienia > Konta usług .

  2. Kliknij Wygeneruj nowy klucz prywatny , a następnie potwierdź, klikając Wygeneruj klucz .

  3. Bezpiecznie przechowuj plik JSON zawierający klucz.

Podczas autoryzacji za pośrednictwem konta usługi masz dwie możliwości podania danych uwierzytelniających do swojej aplikacji. Możesz ustawić zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS lub jawnie przekazać ścieżkę do klucza konta usługi w kodzie. Pierwsza opcja jest bezpieczniejsza i zdecydowanie zalecana.

Aby ustawić zmienną środowiskową:

Ustaw zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS na ścieżkę pliku JSON, który zawiera klucz Twojego konta usługi. Ta zmienna dotyczy tylko bieżącej sesji powłoki, więc jeśli otworzysz nową sesję, ustaw zmienną ponownie.

Linux lub macOS

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

Okna

Z PowerShellem:

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

Po wykonaniu powyższych kroków aplikacja Domyślne poświadczenia (ADC) aplikacji będzie w stanie domyślnie określić Twoje dane logowania, co pozwoli Ci używać danych logowania do konta usługi podczas testowania lub uruchamiania w środowiskach innych niż Google.

Użyj swoich danych logowania Firebase razem z Biblioteką Google Auth dla preferowanego języka, aby pobrać token dostępu OAuth 2.0 o krótkim czasie ważności:

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

W tym przykładzie biblioteka klienta interfejsu API Google uwierzytelnia żądanie za pomocą tokena internetowego JSON lub JWT. Aby uzyskać więcej informacji, zobacz tokeny internetowe JSON .

Pyton

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

Jawa

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

Po wygaśnięciu tokenu dostępu metoda odświeżania tokenu jest wywoływana automatycznie w celu pobrania zaktualizowanego tokenu dostępu.

Aby autoryzować dostęp do Zdalnej konfiguracji, poproś o zakres https://www.googleapis.com/auth/firebase.remoteconfig .

Zmodyfikuj szablon Zdalnej konfiguracji

Podczas pracy z szablonami Zdalnej konfiguracji należy pamiętać, że są one wersjonowane oraz że każda wersja ma ograniczony czas życia od momentu utworzenia do momentu zastąpienia jej aktualizacją: 90 dni, przy łącznym limicie 300 przechowywanych wersji. Zobacz Szablony i wersjonowanie , aby uzyskać więcej informacji.

Pobierz aktualny szablon zdalnej konfiguracji

Możesz użyć interfejsów API zaplecza, aby pobrać bieżącą aktywną wersję szablonu Zdalnej konfiguracji w formacie JSON.

Parametry i wartości parametrów utworzone specjalnie jako warianty w eksperymencie testowania A/B nie są uwzględniane w eksportowanych szablonach.

Użyj następujących poleceń:

kędzior

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

To polecenie wyprowadza ładunek JSON do jednego pliku, a nagłówki (w tym Etag) do osobnego pliku.

Surowe żądanie HTTP

Host: firebaseremoteconfig.googleapis.com

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

To wywołanie interfejsu API zwraca następujący kod JSON wraz z osobnym nagłówkiem, który zawiera tag ETag używany w kolejnym żądaniu.

Sprawdź poprawność szablonu Zdalnej konfiguracji

Opcjonalnie możesz sprawdzić poprawność aktualizacji przed ich opublikowaniem. Sprawdź poprawność aktualizacji szablonu, dołączając do żądania publikacji parametr adresu URL ?validate_only=true . W odpowiedzi kod stanu 200 i zaktualizowany etag z sufiksem -0 oznaczają, że aktualizacja została pomyślnie zweryfikowana. Każda odpowiedź inna niż 200 wskazuje, że dane JSON zawierają błędy, które należy poprawić przed opublikowaniem.

Zaktualizuj szablon Zdalnej konfiguracji

Po pobraniu szablonu i poprawieniu zawartości JSON z żądanymi aktualizacjami możesz go następnie opublikować. Opublikowanie szablonu zgodnie z opisem w tej sekcji powoduje zastąpienie całego istniejącego szablonu konfiguracji zaktualizowanym plikiem, a nowy aktywny szablon otrzymuje numer wersji o jeden większy niż szablon, który został zastąpiony.

W razie potrzeby możesz użyć interfejsu API REST, aby przywrócić poprzednią wersję . Aby zmniejszyć ryzyko błędów w aktualizacji, możesz sprawdzić poprawność przed opublikowaniem .

Personalizacja i warunki Zdalnej konfiguracji są zawarte w pobranych szablonach, dlatego podczas próby publikowania w innym projekcie należy pamiętać o następujących ograniczeniach:

  • Personalizacji nie można importować z projektu do projektu.

    Na przykład, jeśli masz włączone personalizacje w swoim projekcie oraz pobierasz i edytujesz szablon, możesz opublikować go w tym samym projekcie, ale nie możesz opublikować go w innym projekcie, chyba że usuniesz personalizacje z szablonu.

  • Warunki można importować z projektu do projektu, ale należy pamiętać, że wszelkie określone wartości warunkowe (takie jak identyfikatory aplikacji lub grupy odbiorców) powinny istnieć w projekcie docelowym przed opublikowaniem.

    Na przykład jeśli masz parametr zdalnej konfiguracji, który używa warunku określającego wartość platformy iOS , szablon można opublikować w innym projekcie, ponieważ wartości platformy są takie same dla każdego projektu. Jeśli jednak zawiera warunek, który opiera się na określonym identyfikatorze aplikacji lub odbiorcach użytkowników, którzy nie istnieją w projekcie docelowym, weryfikacja zakończy się niepowodzeniem.

  • Jeśli szablon, który planujesz opublikować, zawiera warunki, które opierają się na Google Analytics, Analytics musi być włączone w projekcie docelowym.

kędzior

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

W przypadku tego polecenia curl można określić zawartość za pomocą znaku „@”, po którym następuje nazwa pliku.

Surowe żądanie HTTP

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

Ponieważ jest to żądanie zapisu, ETag jest modyfikowany przez to polecenie, a zaktualizowany ETag jest dostarczany w nagłówkach odpowiedzi następnego polecenia PUT .

Zmodyfikuj warunki zdalnej konfiguracji

Możesz programowo modyfikować warunki i wartości warunkowe Zdalnej konfiguracji. Korzystając z interfejsu API REST, musisz edytować szablon bezpośrednio, aby zmodyfikować warunki przed opublikowaniem szablonu.

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

Powyższe modyfikacje najpierw definiują zestaw warunków, a następnie definiują wartości domyślne i wartości parametrów opartych na warunkach ( wartości warunkowe ) dla każdego parametru. Dodaje również opcjonalny opis dla każdego elementu; podobnie jak komentarze do kodu, są one przeznaczone dla programistów i nie są wyświetlane w aplikacji. ETag jest również dostarczany do celów kontroli wersji.

Interfejsy API zaplecza Zdalnej konfiguracji udostępniają kilka warunków i operatorów porównania, których można użyć do zmiany zachowania i wyglądu aplikacji. Aby dowiedzieć się więcej o warunkach i operatorach obsługiwanych dla tych warunków, zapoznaj się z dokumentacją wyrażeń warunkowych .

Kody błędów HTTP

Kod statusu Oznaczający
200 Pomyślnie zaktualizowano
400 Wystąpił błąd weryfikacji. Na przykład żądanie zawierające więcej niż dozwoloną liczbę kluczy — 2000 — zwróci 400 (Bad Request) z komunikatem o błędzie, Param count too large . Ponadto ten kod stanu HTTPS może wystąpić w tych dwóch sytuacjach:
  • Wystąpił błąd niezgodności wersji, ponieważ zestaw wartości i warunków został zaktualizowany od czasu ostatniego pobrania wartości ETag. Aby rozwiązać ten problem, należy użyć polecenia GET , aby uzyskać nowy szablon i wartość ETag, zaktualizować szablon, a następnie przesłać go przy użyciu tego szablonu i nowej wartości ETag.
  • Wykonano polecenie PUT (żądanie szablonu aktualizacji zdalnej konfiguracji) bez określenia nagłówka If-Match .
401 Wystąpił błąd autoryzacji (nie podano tokena dostępu lub interfejs Firebase Remote Config REST API nie został dodany do Twojego projektu w Cloud Developer Console)
403 Wystąpił błąd uwierzytelniania (podano nieprawidłowy token dostępu)
500 Wystąpił błąd wewnętrzny. Jeśli wystąpi ten błąd, zgłoś zgłoszenie do pomocy Firebase

Kod stanu 200 oznacza, że ​​szablon Zdalnej konfiguracji (parametry, wartości i warunki projektu) został zaktualizowany i jest teraz dostępny dla aplikacji korzystających z tego projektu. Inne kody stanu wskazują, że istniejący wcześniej szablon Zdalnej konfiguracji nadal obowiązuje.

Po przesłaniu aktualizacji szablonu przejdź do konsoli Firebase, aby sprawdzić, czy zmiany pojawiają się zgodnie z oczekiwaniami. Ma to kluczowe znaczenie, ponieważ kolejność warunków wpływa na sposób ich oceny (pierwszy warunek, który ocenia true zaczyna obowiązywać).

Wykorzystanie ETagów i wymuszone aktualizacje

Interfejs API REST Remote Config używa tagu encji (ETag), aby zapobiec wyścigom i nakładającym się aktualizacjom zasobów. Aby dowiedzieć się więcej o ETagach, zobacz ETag - HTTP .

W przypadku interfejsu API REST firma Google zaleca buforowanie ETag dostarczonego przez najnowsze polecenie GET i używanie tej wartości ETag w nagłówku żądania If-Match podczas wydawania poleceń PUT . Jeśli polecenie PUT skutkuje uzyskaniem kodu stanu HTTPS 409, należy wydać nowe polecenie GET , aby uzyskać nowy tag ET i szablon do użycia w następnym poleceniu PUT .

Możesz obejść ETag i ochronę, którą zapewnia, wymuszając aktualizację szablonu Zdalnej konfiguracji w następujący sposób: If-Match: * Jednak to podejście nie jest zalecane, ponieważ może spowodować utratę aktualizacji Zdalnej konfiguracji szablon, jeśli wielu klientów aktualizuje szablon Zdalnej konfiguracji. Ten rodzaj konfliktu może wystąpić w przypadku wielu klientów korzystających z interfejsu API lub w przypadku sprzecznych aktualizacji od klientów interfejsu API i użytkowników konsoli Firebase.

Aby uzyskać wskazówki dotyczące zarządzania wersjami szablonów Zdalnej konfiguracji, zobacz Szablony i wersjonowanie Zdalnej konfiguracji .