欢迎参加我们将于 2022 年 10 月 18 日举办的 Firebase 峰会(线上线下同时进行),了解 Firebase 如何帮助您加快应用开发速度、满怀信心地发布应用,并在之后根据需要轻松地扩大应用规模。立即报名

Szablony zdalnej konfiguracji i wersjonowanie

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: