Начало работы с Firebase Remote Config


Вы можете использовать Firebase Remote Config для определения параметров в вашем приложении и обновления их значений в облаке, что позволяет вам изменять внешний вид и поведение вашего приложения без распространения обновления приложения. Это руководство проведет вас через шаги для начала работы и предоставит несколько примеров кода, все из которых доступны для клонирования или загрузки из репозитория firebase/quickstart-js GitHub.

Шаг 1: Добавьте и инициализируйте Remote Config SDK

  1. Если вы еще этого не сделали, установите Firebase JS SDK и инициализируйте Firebase .

  2. Добавьте Remote Config JS SDK и инициализируйте 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: Установите минимальный интервал выборки

Во время разработки рекомендуется установить относительно низкий минимальный интервал выборки. Подробнее см. в разделе Throttling .

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, включающий все значения по умолчанию, и включить его в свой пакет приложения:

ОТДЫХ

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

Консоль Firebase

  1. На вкладке «Параметры» откройте меню и выберите «Загрузить значения по умолчанию» .
  2. При появлении запроса включите .json для веб-сайтов , затем нажмите «Загрузить файл» .

В следующих примерах показаны два разных способа импорта и установки значений по умолчанию в вашем приложении. В первом примере используется fetch , который сделает HTTP-запрос к файлу defaults, включенному в ваш пакет приложения:

  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 backend , вы можете создавать новые значения по умолчанию на стороне сервера, которые переопределяют значения в приложении в соответствии с желаемой условной логикой или таргетингом пользователя. В этом разделе вы узнаете о шагах консоли Firebase для создания этих значений.

  1. В консоли Firebase откройте свой проект.
  2. Выберите Remote Config в меню, чтобы просмотреть панель управления Remote Config .
  3. Определите параметры с теми же именами, что и параметры, которые вы определили в своем приложении. Для каждого параметра вы можете задать значение по умолчанию (которое в конечном итоге переопределит значение по умолчанию в приложении), а также можете задать условные значения. Чтобы узнать больше, см. Параметры и условия Remote Config .
  4. Если используются пользовательские условия сигнала , определите атрибуты и их значения. Следующий пример показывает, как определить пользовательское условие сигнала.

      let customSignals = {
         "city": "Tokyo",
         "preferred_event_category": "sports"
      }
    
      setCustomSignals(config, customSignals);

Шаг 6: Извлечение и активация значений

  1. Чтобы получить значения параметров из бэкэнда Remote Config , вызовите метод fetchConfig() . Любые значения, которые вы устанавливаете на бэкэнде, извлекаются и кэшируются в объекте Remote Config .
  2. Чтобы сделать извлеченные значения параметров доступными для вашего приложения, вызовите метод activate() .

В случаях, когда вы хотите извлечь и активировать значения за один вызов, используйте fetchAndActivate() как показано в этом примере:

Web

import { fetchAndActivate } from "firebase/remote-config";

fetchAndActivate(remoteConfig)
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

Web

remoteConfig.fetchAndActivate()
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

Поскольку эти обновленные значения параметров влияют на поведение и внешний вид вашего приложения, вам следует активировать извлеченные значения в то время, которое обеспечивает плавный опыт для вашего пользователя, например, в следующий раз, когда пользователь откроет ваше приложение. См. Стратегии загрузки Remote Config для получения дополнительной информации и примеров.

Дросселирование

Если приложение выполняет выборку слишком много раз за короткий промежуток времени, вызовы выборки могут быть ограничены. В таких случаях SDK выдает ошибку FETCH_THROTTLE . Рекомендуется перехватить эту ошибку и повторить попытку в режиме экспоненциальной отсрочки, выжидая более длительные интервалы между последующими запросами выборки.

Во время разработки приложения вам может потребоваться обновлять кэш очень часто (много раз в час), чтобы иметь возможность быстро выполнять итерации по мере разработки и тестирования приложения. Чтобы обеспечить быструю итерацию в проекте с большим количеством разработчиков, вы можете временно добавить свойство с низким минимальным интервалом выборки ( Settings.minimumFetchIntervalMillis ) в свое приложение.

Интервал выборки по умолчанию и рекомендуемый для Remote Config составляет 12 часов, что означает, что конфигурации не будут извлекаться из бэкэнда чаще одного раза в 12-часовом окне, независимо от того, сколько вызовов выборки фактически сделано. В частности, минимальный интервал выборки определяется в следующем порядке:

  1. Параметр в Settings.minimumFetchIntervalMillis .
  2. Значение по умолчанию — 12 часов.

Следующие шаги

Если вы еще этого не сделали, изучите варианты использования Remote Config и посмотрите на некоторые из ключевых концепций и документации «Расширенные стратегии», в том числе:

,


Вы можете использовать Firebase Remote Config для определения параметров в вашем приложении и обновить их значения в облаке, что позволяет вам изменять внешний вид и поведение вашего приложения без распространения обновления приложения. Это руководство проходит через шаги, чтобы начать работу и предоставляет некоторый пример кода, который доступен для клонирования или загрузки с репозитория Firebase/Quickstart-JS Github.

Шаг 1: Добавьте и инициализируйте Remote Config SDK

  1. Если вы еще этого не сделали, установите Firebase JS SDK и инициализируйте Firebase .

  2. Добавьте Remote Config JS SDK и инициализируйте 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, который включает все значения по умолчанию и включить его в свой пакет приложений:

ОТДЫХ

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

Консоль Firebase

  1. На вкладке «Параметры» откройте меню и выберите «Значения по умолчанию» .
  2. При запросе, включите .json для Интернета , затем нажмите «Загрузить файл» .

В следующих примерах показаны два разных способа импорта и установить значения по умолчанию в вашем приложении. Первый пример использует fetch , который сделает HTTP -запрос в файл по умолчанию, включенный в ваш приложение:

  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 для создания этих значений.

  1. В консоли Firebase откройте свой проект.
  2. Выберите Remote Config в меню, чтобы просмотреть Remote Config .
  3. Определите параметры с теми же именами, что и параметры, которые вы определили в вашем приложении. Для каждого параметра вы можете установить значение по умолчанию (которое в конечном итоге будет переопределить значение по умолчанию в приложении), и вы также можете установить условные значения. Чтобы узнать больше, см. Remote Config .
  4. При использовании пользовательских условий сигнала определите атрибуты и их значения. В следующем примере показано, как определить пользовательское условие сигнала.

      let customSignals = {
         "city": "Tokyo",
         "preferred_event_category": "sports"
      }
    
      setCustomSignals(config, customSignals);

Шаг 6: Принесите и активируйте значения

  1. Чтобы получить значения параметров из Remote Config , вызовите метод fetchConfig() . Любые значения, которые вы устанавливаете на бэкэнде, извлекаются и кэшируются в объекте Remote Config .
  2. Чтобы сделать полученные значения параметров, доступных для вашего приложения, вызовите метод activate() .

Для тех случаев, когда вы хотите получить и активировать значения за один вызов, используйте fetchAndActivate() как показано в этом примере:

Web

import { fetchAndActivate } from "firebase/remote-config";

fetchAndActivate(remoteConfig)
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

Web

remoteConfig.fetchAndActivate()
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

Поскольку эти обновленные значения параметров влияют на поведение и внешний вид вашего приложения, вы должны активировать извлекаемые значения за раз, которые обеспечивают плавный опыт для вашего пользователя, например, в следующий раз, когда пользователь открывает ваше приложение. См. Удаленную стратегии загрузки конфигурации для получения дополнительной информации и примеров.

Дросселирование

Если приложение получает слишком много раз за короткое время, вызовы избранных могут быть задушенными. В таких случаях SDK бросает ошибку FETCH_THROTTLE . Вам рекомендуется поймать эту ошибку и повторить в режиме экспоненциального отступления, ожидая более длительных интервалов между последующими запросами выбора.

Во время разработки приложений вы можете очень часто обновлять кэш (много раз в час), чтобы вы быстро обращались при разработке и тестировании своего приложения. Чтобы приспособиться к быстрой итерации в проекте с многочисленными разработчиками, вы можете временно добавить свойство с низким минимальным интервалом выбора ( Settings.minimumFetchIntervalMillis ) в вашем приложении.

The default and recommended production fetch interval for Remote Config is 12 hours, which means that configs won't be fetched from the backend more than once in a 12 hour window, regardless of how many fetch calls are actually made. Specifically, the minimum fetch interval is determined in the following order:

  1. The parameter in Settings.minimumFetchIntervalMillis .
  2. The default value of 12 hours.

Следующие шаги

If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: