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

Szablony zdalnej konfiguracji i wersjonowanie

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

Szablon Zdalna konfiguracja to po stronie serwera zestaw parametrów i warunków w formacie JSON utworzonych dla projektu Firebase. Możesz modyfikować szablon i zarządzać nim za pomocą konsoli Firebase, która wyświetla zawartość szablonu w formacie graficznym na zakładkach Parametry i Warunki . Do modyfikowania konfiguracji i zarządzania nią możesz też użyć interfejsów API backendu Zdalnej konfiguracji lub interfejsu Firebase CLI .

Oto przykład pliku szablonu:

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

Za każdym razem, gdy aktualizujesz parametry, Zdalna konfiguracja tworzy nowy wersjonowany szablon Zdalnej konfiguracji i przechowuje poprzedni szablon jako wersję, którą można pobrać lub przywrócić w razie potrzeby. Numery wersji są zwiększane sekwencyjnie od wartości początkowej przechowywanej przez Remote Config. Wszystkie szablony zawierają pole version , jak pokazano, zawierające metadane dotyczące tej konkretnej wersji.

Za pomocą konsoli Firebase, interfejsu Firebase CLI lub interfejsów API backendu Remote Config możesz wykonywać następujące zadania zarządzania wersjami:

  • Wymień wszystkie zapisane wersje szablonów
  • Pobierz konkretną wersję
  • Wróć do określonej wersji

Zarządzając szablonami Zdalnej konfiguracji, pamiętaj o progu wygaśnięcia: bieżący aktywny szablon Zdalnej konfiguracji używany przez Twoją aplikację nie wygasa; jednak jeśli zostanie zastąpiony aktualizacją, poprzednia wersja będzie przechowywana tylko przez 90 dni, po czym wygaśnie i nie będzie można jej odzyskać. Istnieje również całkowity limit 300 przechowywanych wersji. Jeśli chcesz zapisać lub przywrócić szablon poza tymi limitami, zapisz go i zapisz ręcznie.

Zarządzaj wersjami szablonów Zdalnej konfiguracji

W tej sekcji opisano, jak zarządzać wersjami szablonu Zdalnej konfiguracji. Aby uzyskać więcej informacji na temat programowego tworzenia, modyfikowania i zapisywania szablonów, zobacz Programowe modyfikowanie zdalnej konfiguracji .

Wyświetl listę wszystkich zapisanych wersji szablonu Zdalnej konfiguracji

Możesz pobrać listę wszystkich zapisanych wersji szablonu Zdalnej konfiguracji. Na przykład:

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

Jawa

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

RESZTA

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

Konsola Firebase

W zakładce Parametry wybierz ikonę „zegar” wyświetlaną w prawym górnym rogu. Spowoduje to otwarcie strony Historia zmian z listą wszystkich zapisanych wersji szablonów w menu listy po prawej stronie.

Szczegóły wyświetlane dla każdej przechowywanej wersji zawierają informacje o tym, czy zmiany pochodziły z konsoli, z REST API, z wycofania, czy były to zmiany przyrostowe z wymuszonego zapisania szablonu.

Interfejs wiersza polecenia Firebase

firebase remoteconfig:versions:list

Użyj opcji --limit , aby ograniczyć liczbę zwracanych wersji. Podaj „0”, aby pobrać wszystkie wersje.

Lista szablonów zawiera metadane dla wszystkich przechowywanych wersji, w tym czas aktualizacji, użytkownika, który ją wykonał oraz czy została wykonana za pomocą konsoli czy REST API. Oto przykład elementu wersji:

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

Pobierz konkretną wersję szablonu Zdalnej konfiguracji

Możesz pobrać dowolną określoną, zapisaną wersję szablonu Zdalnej konfiguracji. Na przykład:

Node.js

Przekaż getTemplate() bez żadnych argumentów, aby pobrać najnowszą wersję szablonu lub pobrać konkretną wersję, użyj 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);
  });

Jawa

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

RESZTA

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

Parametr adresu URL ?version_number jest prawidłowy tylko dla operacji GET ; nie można go używać do określania numerów wersji aktualizacji. Podobne żądanie get bez parametru ?version_number bieżący aktywny szablon.

Konsola Firebase

Domyślnie panel szczegółów na karcie Historia zmian wyświetla aktualnie aktywny szablon. Aby wyświetlić szczegóły innej wersji na liście, wybierz ją z prawego menu.

Możesz wyświetlić szczegółowe porównanie aktualnie wybranej wersji i dowolnej innej zapisanej wersji, najeżdżając na menu kontekstowe dowolnej niewybranej wersji i wybierając Porównaj z wybraną wersją.

Interfejs wiersza polecenia Firebase

firebase remoteconfig:get -v VERSION_NUMBER

Opcjonalnie możesz zapisać dane wyjściowe do określonego pliku za pomocą -o, FILENAME .

Przywróć do określonej zapisanej wersji szablonu Zdalnej konfiguracji

Możesz cofnąć się do dowolnej zapisanej wersji szablonu. Na przykład:

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

Jawa

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

RESZTA

Aby powrócić do zapisanego szablonu Zdalnej konfiguracji, wyślij HTTP POST z niestandardową metodą :rollback i, w treści żądania, konkretną wersją do zastosowania. Na przykład:

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

Odpowiedź zawiera zawartość aktualnie aktywnego zapisanego szablonu wraz z metadanymi nowej wersji.

Konsola Firebase

W przypadku poprzednich wersji szablonów kwalifikujących się do wycofania, przycisk opcji przywracania do tej wersji jest wyświetlany w prawym górnym rogu strony Historia zmian . Kliknij i potwierdź to tylko wtedy, gdy masz pewność, że chcesz przywrócić tę wersję i natychmiast użyć tych wartości dla wszystkich aplikacji i użytkowników.

Interfejs wiersza polecenia Firebase

firebase remoteconfig:rollback -v VERSION_NUMBER

Zauważ, że ta operacja wycofywania skutecznie tworzy nową wersję numerowaną. Na przykład wycofanie z wersji 10 do wersji 6 skutecznie tworzy nową kopię wersji 6, różniącą się od oryginału tylko tym, że jej numer wersji to 11. Oryginalna wersja 6 jest nadal przechowywana, zakładając, że nie osiągnęła ona swojej ważności, a wersja 11 staje się aktywnym szablonem.

Pobierz i opublikuj szablony Zdalnej konfiguracji

Pobierz i opublikuj szablony Zdalnej konfiguracji, aby zintegrować je z systemami kontroli źródła i kompilacji, zautomatyzować aktualizacje konfiguracji oraz zsynchronizować parametry i wartości w wielu projektach.

Aktualnie aktywny szablon Zdalnej konfiguracji możesz pobrać programowo lub z konsoli Firebase. Następnie możesz zaktualizować wyeksportowany plik JSON i opublikować go w tym samym projekcie lub opublikować w nowym lub istniejącym projekcie.

Załóżmy, że masz wiele projektów, które reprezentują różne etapy cyklu rozwoju oprogramowania, takie jak środowiska programistyczne, testowe, pomostowe i produkcyjne. W takim przypadku można promować w pełni przetestowany szablon ze środowiska pomostowego do środowiska produkcyjnego, pobierając go z projektu pomostowego i publikując w projekcie produkcyjnym.

Tej metody można również użyć do migracji konfiguracji z jednego projektu do drugiego lub wypełnienia nowego projektu parametrami i wartościami z ustalonego projektu.

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

Aby wyeksportować i zaimportować szablony Zdalnej konfiguracji:

  1. Pobierz aktualny szablon konfiguracji zdalnej konfiguracji .
  2. Sprawdź poprawność szablonu Zdalnej konfiguracji .
  3. Opublikuj szablon Zdalnej konfiguracji .

Pobierz aktualny szablon zdalnej konfiguracji

Bieżący i aktywny szablon Zdalnej konfiguracji możesz pobrać programowo lub za pomocą konsoli Firebase.

Użyj następujących poleceń, aby pobrać aktywny szablon Zdalnej konfiguracji w formacie JSON:

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

RESZTA

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 headers .

Konsola Firebase

  1. Na karcie Parametry lub Warunki zdalnej konfiguracji otwórz menu i wybierz opcję Pobierz bieżący plik konfiguracyjny .
  2. Po wyświetleniu monitu kliknij Pobierz plik konfiguracyjny , wybierz lokalizację, w której chcesz zapisać plik, a następnie kliknij Zapisz .

Interfejs wiersza polecenia Firebase

firebase remoteconfig:get -o filename

Sprawdź poprawność szablonu Zdalnej konfiguracji

Możesz zweryfikować aktualizacje szablonu przed ich opublikowaniem za pomocą pakietu Firebase Admin SDK lub interfejsu API REST. Szablony są również sprawdzane podczas próby publikowania z interfejsu Firebase CLI lub konsoli Firebase.

Proces sprawdzania poprawności szablonu 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 .

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

RESZTA

Sprawdź poprawność aktualizacji szablonu, dołączając parametr adresu URL ?validate_only=true do żądania publikacji:

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

Jeśli Twój szablon został pomyślnie zweryfikowany, polecenie curl zwraca przesłany szablon JSON, aw zapisanym pliku headers znajdziesz status HTTP/2 200 i zaktualizowany element ETag z sufiksem -0 . Jeśli Twój szablon nie został zweryfikowany, otrzymasz błąd walidacji w odpowiedzi JSON, a plik headers będzie zawierał odpowiedź inną niż 200 (i bez ETag).

Opublikuj szablon Zdalnej konfiguracji

Po pobraniu szablonu, wprowadzeniu niezbędnych zmian w zawartości JSON i sprawdzeniu jego poprawności, możesz opublikować go w projekcie.

Opublikowanie szablonu zastępuje cały istniejący szablon konfiguracji zaktualizowanym plikiem i zwiększa wersję szablonu o jeden. Ponieważ cała konfiguracja jest zastępowana, jeśli usuniesz parametr z pliku JSON i opublikujesz go, parametr zostanie usunięty z serwera i nie będzie już dostępny dla klientów.

Po opublikowaniu zmiany parametrów i wartości są natychmiast dostępne dla Twoich aplikacji i użytkowników. W razie potrzeby możesz przywrócić poprzednią wersję .

Użyj następujących poleceń, aby opublikować swój szablon:

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

RESZTA

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.

Konsola Firebase

  1. Na karcie Parametry lub Warunki zdalnej konfiguracji otwórz menu i wybierz opcję Publikuj z pliku .
  2. Po wyświetleniu monitu kliknij Przeglądaj , przejdź do i wybierz plik Zdalnej konfiguracji, który chcesz opublikować, a następnie kliknij Wybierz .
  3. Plik zostanie zweryfikowany i jeśli się powiedzie, możesz kliknąć Opublikuj , aby natychmiast udostępnić konfigurację dla swoich aplikacji i użytkowników.

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.

Pobierz domyślne ustawienia szablonu Zdalnej konfiguracji

Ponieważ aplikacja może nie zawsze być połączona z Internetem, należy skonfigurować domyślne wartości aplikacji po stronie klienta dla wszystkich parametrów zdalnej konfiguracji. Należy również okresowo synchronizować domyślne wartości klienta aplikacji i domyślne wartości parametrów zaplecza Zdalnej konfiguracji, ponieważ mogą się one zmieniać w czasie.

Jak opisano w linkach dotyczących platformy na końcu tej sekcji, możesz ręcznie ustawić te wartości domyślne w swojej aplikacji lub usprawnić ten proces, pobierając pliki zawierające tylko pary klucz-wartość dla wszystkich parametrów i ich wartości domyślne w aktywny szablon Zdalnej konfiguracji. Następnie możesz dołączyć ten plik do projektu i skonfigurować aplikację do importowania tych wartości.

Możesz pobrać te pliki w formacie XML w przypadku aplikacji na Androida, w formacie listy właściwości (plist) w przypadku aplikacji na iOS oraz w formacie JSON w przypadku aplikacji internetowych.

Zalecamy okresowe pobieranie ustawień domyślnych Remote Config przed każdą nową wersją aplikacji, aby upewnić się, że aplikacja i zaplecze Remote Config pozostają zsynchronizowane.

Aby pobrać plik zawierający domyślne ustawienia szablonu:

RESZTA

curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=file_format'

Użyj XML , PLIST lub JSON jako wartości format , w zależności od formatu pliku, który chcesz pobrać.

Konsola Firebase

  1. Na karcie Parametry otwórz menu i wybierz opcję Pobierz wartości domyślne .
  2. Po wyświetleniu monitu kliknij przycisk radiowy odpowiadający formatowi pliku, który chcesz pobrać, a następnie kliknij opcję Pobierz plik .

Aby uzyskać więcej informacji na temat importowania domyślnych wartości Zdalnej konfiguracji do swojej aplikacji, zobacz: