| Выберите платформу: | iOS+ Android Веб Flutter Unity C++ |
С помощью Firebase Remote Config можно задавать параметры в приложении и обновлять их значения в облаке, чтобы менять внешний вид и поведение приложения без выпуска обновлений. В этом руководстве приведены пошаговые инструкции по началу работы и примеры кода, которые можно клонировать или скачать из репозитория GitHub firebase/quickstart-js.
Шаг 1. Добавьте и инициализируйте SDK Remote Config
Если вы ещё этого не сделали, установите Firebase JS SDK и инициализируйте Firebase.
Добавьте JS SDK Remote Config и инициализируйте Remote Config:
Web
import { initializeApp } from "firebase/app"; import { getRemoteConfig } from "firebase/remote-config"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Remote Config and get a reference to the service const remoteConfig = getRemoteConfig(app);
Web
import firebase from "firebase/compat/app"; import "firebase/compat/remote-config"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Remote Config and get a reference to the service const remoteConfig = firebase.remoteConfig();
Этот объект используется для хранения значений параметров по умолчанию, получения обновленных значений параметров из серверной части Remote Config и управления тем, когда полученные значения становятся доступными для вашего приложения.
Шаг 2. Задайте минимальный интервал получения
Во время разработки рекомендуется задать относительно низкий минимальный интервал получения. Подробнее об ограничении пропускной способности…
Web
// The default and recommended production fetch interval for Remote Config is 12 hours remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Web
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Шаг 3. Задайте значения параметров по умолчанию в приложении
Вы можете задать значения параметров по умолчанию в объекте Remote Config, чтобы приложение работало корректно до подключения к серверу Remote Config и чтобы значения по умолчанию были доступны, если они не заданы на сервере.
Web
remoteConfig.defaultConfig = { "welcome_message": "Welcome" };
Web
remoteConfig.defaultConfig = { "welcome_message": "Welcome" };
Если вы уже настроили значения параметров серверной части Remote Config, вы можете скачать сгенерированный JSON-файл со всеми значениями по умолчанию и включить его в набор App Bundle.
REST
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=JSON -o remote_config_defaults.json
Вы можете сгенерировать токен на предъявителя, выполнив следующую команду с помощью Google Cloud CLI или Cloud Shell:
gcloud auth print-access-token
Этот токен действует недолго, поэтому, если вы получите ошибку аутентификации, вам может потребоваться сгенерировать его заново.
Консоль Firebase
В консоли Firebase перейдите на страницу DevOps & Engagement (DevOps и вовлечение) > Remote Config (Удаленная конфигурация) > Parameters (Параметры).
Откройте
меню и выберите Скачать значения по умолчанию.Когда появится запрос, включите .json для веб-сайтов, а затем нажмите Скачать файл.
В примерах ниже показано два способа импорта и установки значений по умолчанию в приложении. В первом примере используется fetch, который отправляет HTTP-запрос к файлу со значениями по умолчанию, включенному в набор App Bundle.
const rcDefaultsFile = await fetch('remote_config_defaults.json'); const rcDefaultsJson = await rcDefaultsFile.json(); remoteConfig.defaultConfig = rcDefaultsJson;
В следующем примере используется require, который компилирует значения в приложение во время сборки:
let rcDefaults = require('./remote_config_defaults.json');
remoteConfig.defaultConfig = rcDefaults;Шаг 4. Получите значения параметров, которые будут использоваться в приложении
Теперь вы можете получать значения параметров из объекта Remote Config. Если вы позже зададите значения в серверной части, получите их и активируете, они станут доступны в приложении.Чтобы получить эти значения, вызовите метод getValue(), указав ключ параметра в качестве аргумента.
Web
import { getValue } from "firebase/remote-config"; const val = getValue(remoteConfig, "welcome_messsage");
Web
const val = remoteConfig.getValue("welcome_messsage");
Шаг 5. Задайте значения параметров
С помощью консоли Firebase или серверных API Remote Config можно создать новые значения по умолчанию на стороне сервера, которые будут переопределять значения в приложении в соответствии с заданной условной логикой или таргетингом на пользователей. В этом разделе рассказывается, как создать эти значения в консоли Firebase.
В консоли Firebase перейдите на страницу DevOps & Engagement (DevOps и вовлечение) > Remote Config (Удаленная конфигурация) > Parameters (Параметры).
Задайте параметры с теми же названиями, что и в приложении. Для каждого параметра можно установить значение по умолчанию (которое в конечном итоге переопределит значение по умолчанию в приложении), а также условные значения. Подробнее о параметрах и условиях Remote Config…
Если вы используете условия для специальных сигналов, задайте атрибуты и их значения. В примере ниже показано, как задать условие для специального сигнала.
let customSignals = { "city": "Tokyo", "preferred_event_category": "sports" } setCustomSignals(config, customSignals);
Шаг 6. Получите и активируйте значения
- Чтобы получить значения параметров из серверной части Remote Config, вызовите метод
fetchConfig(). Все значения, заданные на сервере, извлекаются и кешируются в объекте Remote Config. - Чтобы сделать полученные значения параметров доступными для приложения, вызовите метод
activate().
Если вы хотите получить и активировать значения за один вызов, используйте fetchAndActivate(), как показано в примере ниже.
Web
import { fetchAndActivate } from "firebase/remote-config"; fetchAndActivate(remoteConfig) .then(() => { // ... }) .catch((err) => { // ... });
Web
remoteConfig.fetchAndActivate() .then(() => { // ... }) .catch((err) => { // ... });
Поскольку эти обновленные значения параметров влияют на поведение и внешний вид приложения, их следует активировать в тот момент, когда это не помешает пользователю, например при следующем открытии приложения. Дополнительную информацию и примеры можно найти в статье Стратегии загрузки Remote Config.
Шаг 7. Прослушивайте обновления в реальном времени
После получения значений параметров вы можете использовать Remote Config в реальном времени, чтобы отслеживать обновления из серверной части Remote Config. Remote Config в реальном времени сообщает подключенным устройствам о доступности обновлений и автоматически получает изменения после публикации новой версии Remote Config.
В приложении используйте
onConfigUpdate, чтобы начать прослушивание обновлений и автоматически получать новые значения параметров. Реализуйте обратный вызовnext, чтобы активировать обновленную конфигурацию.onConfigUpdate(remoteConfig, { next: (configUpdate) => { console.log("Updated keys:", configUpdate.getUpdatedKeys()); if (configUpdate.getUpdatedKeys().has("welcome_message")) { activate(remoteConfig).then(() => { showWelcomeMessage(); }); } }, error: (error) => { console.log("Config update error:", error); }, complete: () => { console.log("Listening stopped."); } });
При следующей публикации новой версии Remote Config устройства, на которых запущено приложение и которые отслеживают изменения, вызовут обработчик завершения.
Ограничение пропускной способности
Если приложение выполняет слишком много запросов за короткий период времени, вызовы могут быть ограничены. В таких случаях SDK выдает ошибку FETCH_THROTTLE. Рекомендуем перехватывать эту ошибку и повторять попытку в режиме экспоненциальной выдержки, увеличивая интервалы между последующими запросами на получение.
При разработке приложения может потребоваться часто обновлять кеш (несколько раз в час), чтобы быстро выполнять итерации. Чтобы ускорить итерации в проекте с большим количеством разработчиков, вы можете временно добавить в приложение свойство с низким минимальным интервалом получения (Settings.minimumFetchIntervalMillis).
Рекомендуемый интервал получения данных для рабочей версии Remote Config по умолчанию составляет 12 часов. Это означает, что конфигурации будут запрашиваться из серверной части не чаще одного раза в 12 часов, независимо от того, сколько вызовов получения данных было сделано. Минимальный интервал получения определяется в следующем порядке:
- Параметр в
Settings.minimumFetchIntervalMillis. - Значение по умолчанию – 12 часов.