Szablony Zdalnej konfiguracji i obsługa wersji


Remote Config szablony to zestawy w formacie JSON parametrów i warunków utworzonych przez Ciebie na potrzeby projektu Firebase. Ty może tworzyć szablony klientów, z których aplikacja pobiera wartości; serwerów, z których klienty serwera mogą pobierać wartości.

W tej sekcji omawiamy szablony klientów. Więcej informacji o ustawieniach serwera szablonów, kliknij Szablony serwera.

Szablon możesz modyfikować i zarządzać nim w konsoli Firebase, która wyświetla zawartość szablonu w formacie graficznym w Parametry i karty Warunki.

Do modyfikowania szablonu klienta i zarządzania nim możesz też użyć interfejsu API REST Remote Config i pakietu Admin SDK lub wiersza poleceń Firebase.

Oto przykładowy plik szablonu klienta:

      {
        "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 pomocą konsoli Firebase możesz wykonywać te zadania zarządzania wersjami:

  • Wyświetlanie listy wszystkich zapisanych wersji szablonu
  • Pobieranie konkretnej wersji
  • Przywracanie określonej wersji klienta
  • Usuń szablony (Remote Config) z sekcji Zmień historia strona

Możesz też wyświetlać listę szablonów, pobierać je i cofania ich za pomocą interfejsów backendu Remote Config i Firebase CLI.

Obowiązuje limit 300 przechowywanych wersji bezterminowo na typ szablonu. (300 szablonów klienta i 300 szablonów serwera), w tym zapisane numerów wersji usuniętych szablonów. Jeśli w trakcie trwania projektu opublikujesz więcej niż 300 wersji szablonu na typ szablonu, najstarsze wersje zostaną usunięte, zachowując maksymalnie 300 wersji tego typu.

Za każdym razem, gdy aktualizujesz parametry, Remote Config tworzy nową wersję szablonu Remote Config i przechowuje poprzednią wersję jako wersję, do której możesz wrócić w razie potrzeby. Numery wersji są zwiększane sekwencyjnie od wartości początkowej zapisanej przez parametr Remote Config. Wszystkie szablony zawierają pole version, które zawiera metadane dotyczące danej wersji.

W razie potrzeby możesz usuwać szablony Remote Config na stronieHistoria zmianw konsoli Remote Config.

Zarządzaj wersjami szablonu Remote Config

W tej sekcji opisaliśmy, jak zarządzać wersjami szablonu Remote Config.

Więcej informacji o tworzeniu programowo modyfikować i zapisywać szablony, zobacz Automatycznie zmodyfikuj Remote Config.

Wyświetlanie listy wszystkich zapisanych wersji szablonu Remote Config

Możesz pobrać listę wszystkich zapisanych wersji szablonu Remote Config. Aby to zrobić:

Konsola Firebase

Na karcie Parametry kliknij ikonę zegara w prawym górnym rogu. Otworzy się Historia zmian w menu po prawej stronie z listą wszystkich przechowywanych wersji szablonów.

Szczegóły wyświetlane w przypadku każdej zapisanej wersji obejmują informacje o tym, czy zmiany zostały wprowadzone za pomocą konsoli, interfejsu REST API, cofnięcia zmian czy czy były to zmiany przyrostowe wynikające z wymuszonego zapisania szablonu.

Firebase CLI

firebase remoteconfig:versions:list

Aby ograniczyć liczbę zwracanych wersji, użyj opcji --limit. Pomyśl „0” pobierz wszystkie wersje.

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

REST

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

Lista szablonów zawiera metadane wszystkich zapisanych wersji, w tym czas aktualizacji, użytkownika, który ją wprowadził, oraz sposób jej wprowadzenia. Oto przykład elementu wersji:

```json
{
  "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 Remote Config

Możesz pobrać dowolną zapisaną wersję szablonu Remote Config. Aby pobrać zapisaną wersję szablonu:

Konsola Firebase

Domyślnie okienko szczegółów w Karta Historia zmian wyświetla bieżący aktywny szablon. Aby wyświetlić szczegóły innej wersji na liście, wybierz ją w menu po prawej stronie.

Możesz wyświetlić szczegółowe różnice między obecnie wybraną wersją a dowolnymi zapisanej wersji po najechaniu kursorem na menu kontekstowe dowolnej niewybranej wersji i kliknij Porównaj z wybraną wersją.

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

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

Node.js

Aby pobrać najnowszą wersję szablonu, prześlij getTemplate() bez żadnych argumentów. Aby pobrać określoną 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);
  });

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

REST

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 w przypadku operacji GET. Nie możesz go używać do określania numerów wersji aktualizacji. Podobne żądania bez ?version_number pobierze bieżący aktywny szablon.

Wycofaj zmiany do określonej zapisanej wersji szablonu Remote Config

Możesz wrócić do dowolnego zapisanego wersji szablonu. Aby przywrócić poprzednią wersję szablonu:

Konsola Firebase

W przypadku poprzednich wersji szablonu kwalifikujących się do przywrócenia przycisk opcji przywracania do danej wersji jest widoczny w prawym górnym rogu Historia zmian stronę. Kliknij i potwierdź tę opcję tylko wtedy, gdy na pewno chcesz wrócić do poprzedniej wersji wersji i używaj tych wartości od razu w przypadku wszystkich aplikacji i użytkowników.

Firebase CLI

firebase remoteconfig:rollback -v VERSION_NUMBER

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

REST

Aby przywrócić zapisany szablon Remote Config, wyślij żądanie HTTP POST z metoda niestandardowa :rollback oraz konkretna wersja w treści żądania . 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ść obecnie aktywnego przechowywanego szablonu wraz z metadanymi jego nowej wersji.

Pamiętaj, że ta operacja przywracania spowoduje utworzenie nowej wersji z numerem. Na przykład przywrócenie wersji 10 do wersji 6 spowoduje utworzenie nowej kopii wersji 6, która różni się od oryginału tylko tym, że jej numer wersji to 11. Oryginalna wersja 6 jest nadal przechowywany, zakładając, że nie upłynął jeszcze termin wygaśnięcia wersji, a wersja 11 stanie się szablonem aktywnym.

Usuwanie szablonu Remote Config

Szablony dla domeny Remote Config możesz usunąć w konsoli Firebase. Aby usunąć szablon Remote Config:

1. Z lig Remote Config Parametry kliknij Historia zmian.
  1. Przejdź do szablonu, który chcesz usunąć, i kliknij Więcej, a następnie wybierz Usuń.

  2. Gdy pojawi się prośba o potwierdzenie usunięcia, kliknij Usuń.

Pobieranie i publikowanie szablonów Remote Config

Pobierz i opublikuj Remote Config szablonu, aby zintegrować je ze swoim kontrola źródła i systemy kompilacji, automatyzowanie aktualizacji konfiguracji oraz zachowywanie parametrów i wartości w wielu projektach.

Możesz pobrać aktywny szablon Remote Config automatycznie lub Następnie możesz zaktualizować wyeksportowany plik JSON i opublikować go w tym samym projekcie lub w nowym lub istniejącym projekcie.

Załóżmy, że masz wiele projektów, które reprezentują różne etapy cyklu życia rozwoju oprogramowania, takie jak środowisko programistyczne, testowe, przejściowe i produkcyjne. W takiej sytuacji możesz promować w pełni przetestowany szablon ze swojej środowiska testowego do środowiska produkcyjnego. Pobierz je ze swojego i opublikować projekt w projekcie produkcyjnym.

Możesz też użyć tej metody do migracji konfiguracji z jednego projektu do innego lub do wypełnienia nowego projektu parametrami i wartościami z istniejącego projektu.

Parametry i ich wartości utworzone jako warianty w eksperymencie A/B Testing nie są uwzględniane w wyeksportowanych szablonach.

Aby wyeksportować i zaimportować Remote Config szablon:

  1. Pobierz aktualny szablon konfiguracji Remote Config.
  2. Sprawdź szablon Remote Config.
  3. Opublikuj szablon Remote Config.

Pobierz bieżący szablon Zdalnej konfiguracji

Aby pobrać aktywny szablon Remote Config w formacie JSON:

Konsola Firebase

  1. Na karcie Remote Config Parametry lub Warunki otwórz Menu i wybierz Pobierz bieżący plik konfiguracji.
  2. Gdy pojawi się prośba, kliknij Pobierz plik konfiguracyjny i wybierz lokalizację, w której chcesz zapisać plik, a potem kliknij Zapisz.

Interfejs wiersza poleceń Firebase

firebase remoteconfig:get -o filename

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

REST

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

Wywołuje ono ładunek JSON do jednego pliku, a nagłówki (w tym ETag) do osobnego pliku headers.

Weryfikacja szablonu Zdalnej konfiguracji

Zanim opublikujesz aktualizacje szablonu, możesz je zweryfikować za pomocą interfejsu Firebase Admin SDK lub interfejsu API REST. Szablony są również weryfikowane, gdy próbujesz do opublikowania za pomocą interfejsu wiersza poleceń Firebase lub konsoli Firebase.

Proces sprawdzania szablonu wykrywa błędy, takie jak zduplikowane klucze parametrów i warunków, nieprawidłowe nazwy warunków lub nieistniejące warunki oraz nieprawidłowo sformatowane tagi ETag. Na przykład żądanie zawierające więcej niż dozwolone Liczba kluczy – 2000 – zwraca 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);
      });
}

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

REST

Sprawdź poprawność aktualizacji szablonu, dodają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 zwróci przesłany przez Ciebie szablon JSON, a w zapisanym pliku headers znajdziesz kod stanu HTTP/2 200 i zaktualizowany ETag z sufiksem -0. Jeśli nie został zweryfikowany szablon, w Odpowiedź JSON i plik headers będą zawierać odpowiedź inną niż 200 (i nie ma ETag).

Opublikuj szablon Remote Config

Po pobraniu szablonu, wprowadzeniu w nim niezbędnych zmian i sprawdzeniu go możesz opublikować go w projekcie.

Publikowanie szablonu powoduje zastąpienie całego dotychczasowego szablonu konfiguracji zaktualizowanym plikiem i zwiększenie wersji szablonu o 1. Ponieważ cały zostanie zastąpiona, jeśli usuniesz parametr z pliku JSON po jego opublikowaniu, parametr zostanie usunięty z serwera i nie będzie już dostępny nowych klientów.

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

Aby opublikować szablon, użyj tych poleceń:

Konsola Firebase

  1. Z poziomu Remote Config Parametry lub warunki otwórz menu, i wybierz Opublikuj z pliku.
  2. Gdy pojawi się komunikat, kliknij Przeglądaj, przejdź do Remote Config plik, który chcesz opublikować, a następnie kliknij Wybierz.
  3. Plik zostanie zweryfikowany. Jeśli operacja się powiedzie, kliknij Opublikuj, aby od razu udostępnić konfigurację aplikacji i użytkowników.

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

REST

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 tym poleceniu curl możesz określić zawartość, używając znaku „@”, a następnie nazwy pliku.

Remote Config personalizacji i warunków są uwzględnione w pobranych szablonów. Pamiętaj o tych kwestiach: podczas próby opublikowania w innym projekcie:

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

    Jeśli na przykład w projekcie masz włączone personalizacje pobrać i edytować szablon, można go opublikować projektu, ale nie możesz go opublikować w innym projekcie, chyba że go usuniesz personalizacje z szablonu.

  • Warunki można importować z jednego projektu do drugiego, ale pamiętaj, że przed opublikowaniem w projekcie docelowym powinny znajdować się odpowiednie wartości warunkowe (np. identyfikatory aplikacji lub listy odbiorców).

    Jeśli np. masz parametr Remote Config, który używa warunku określającego wartość platformy iOS, możesz opublikować szablon w innym projekcie, ponieważ wartości platform są takie same w przypadku każdego projektu. Jeśli jednak zawiera on warunek, który zależy od określonego identyfikatora aplikacji lub listy odbiorców, która nie istnieje w docelowym projekcie, weryfikacja się nie powiedzie.

  • Jeśli szablon, który zamierzasz opublikować, zawiera warunki oparte na atrybucie Google Analytics, w projekcie docelowym musisz włączyć atrybut Analytics.

Pobierz domyślne szablony Remote Config

Aplikacja nie zawsze ma połączenie z internetem, należy skonfigurować domyślne wartości aplikacji po stronie klienta dla wszystkich elementów Remote Config . Warto też okresowo synchronizować domyślne wartości klienta aplikacji i wartości domyślne parametrów Remote Config w backendzie, ponieważ mogą się one zmieniać z czasem.

Jak opisano w linkach do stron dotyczących poszczególnych platform na końcu tej sekcji, możesz ręcznie ustawić te domyślne wartości w aplikacji lub usprawnić ten proces, pobierając pliki zawierające tylko pary klucz-wartość dla wszystkich parametrów i ich domyślne wartości w aktywnej Remote Config. Następnie możesz: uwzględnić ten plik w projekcie i skonfigurować importowanie tych wartości w aplikacji.

Pliki te możesz pobrać w formacie XML (aplikacje na Androida), plist (aplikacje na iOS) lub JSON (aplikacje internetowe).

Zalecamy okresowe pobieranie ustawień domyślnych (Remote Config), zanim zaczną obowiązywać nowe wersji aplikacji, aby zapewnić, że aplikacja i backend Remote Config pozostaną w niej synchronizację.

Aby pobrać plik z domyślnymi ustawieniami szablonu:

REST

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

Jako wartość parametru format wpisz XML, PLIST lub JSON, w zależności od tego, jaki format pliku chcesz pobrać.

Konsola Firebase

  1. Na karcie Parametry otwórz Menu i wybierz Pobierz wartości domyślne.
  2. Gdy pojawi się odpowiedni komunikat, kliknij przycisk odpowiadający odpowiedniemu plikowi. w formacie, który chcesz pobrać, i kliknij Pobierz plik.

Aby uzyskać więcej informacji o importowaniu Remote Config wartości domyślnych do zobacz: