Firebase is back at Google I/O on May 10! Register now

Начните работу с Firebase Remote Config

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.


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

Библиотека Remote Config используется для хранения значений параметров по умолчанию в приложении, извлечения обновленных значений параметров из серверной части Remote Config и управления тем, когда полученные значения становятся доступными для вашего приложения. Дополнительные сведения см. в разделе Стратегии загрузки Remote Config .

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

Шаг 1. Добавьте Remote Config в свое приложение.

Прежде чем вы сможете использовать Remote Config , вам необходимо:

  • Зарегистрируйте свой проект Unity и настройте его для использования Firebase.

    • Если ваш проект Unity уже использует Firebase, значит, он уже зарегистрирован и настроен для Firebase.

    • Если у вас нет проекта Unity, вы можете скачать образец приложения .

  • Добавьте SDK Firebase Unity (в частности, FirebaseRemoteConfig.unitypackage ) в свой проект Unity.

Обратите внимание, что добавление Firebase в ваш проект Unity включает задачи как в консоли Firebase , так и в вашем открытом проекте Unity (например, вы загружаете файлы конфигурации Firebase из консоли, а затем перемещаете их в свой проект Unity).

Шаг 2. Установите значения параметров по умолчанию в приложении

Вы можете установить значения параметров по умолчанию в приложении в объекте Remote Config, чтобы ваше приложение вело себя должным образом, прежде чем оно подключится к серверной части Remote Config, и чтобы значения по умолчанию были доступны, если ни одно из них не установлено в серверной части.

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

(Нестроковые свойства будут преобразованы в тип свойства при вызове SetDefaultsAsync() ).

System.Collections.Generic.Dictionary<string, object> defaults =
  new System.Collections.Generic.Dictionary<string, object>();

// These are the values that are used if we haven't fetched data from the
// server
// yet, or if we ask for values that the server doesn't have:
defaults.Add("config_test_string", "default local string");
defaults.Add("config_test_int", 1);
defaults.Add("config_test_float", 1.0);
defaults.Add("config_test_bool", false);

Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(defaults)
  .ContinueWithOnMainThread(task => {

Шаг 3. Получите значения параметров для использования в приложении

Теперь вы можете получить значения параметров из объекта Remote Config. Если вы задали значения в бэкэнде Remote Config, извлекли их, а затем активировали, эти значения станут доступны вашему приложению. В противном случае вы получите значения параметров в приложении, настроенные с помощью SetDefaultsAsync() .

Чтобы получить эти значения, используйте GetValue() , указав ключ параметра в качестве аргумента. Это возвращает ConfigValue , у которого есть свойства для преобразования значения в различные базовые типы.

Шаг 4. Подключите свое приложение к консоли Firebase.

В консоли Firebase добавьте свое приложение в проект Firebase.

Шаг 5: Установите значения параметров

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

Шаг 6: Получите и активируйте значения (при необходимости)

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

// Start a fetch request.
// FetchAsync only fetches new data if the current data is older than the provided
// timespan.  Otherwise it assumes the data is "recent enough", and does nothing.
// By default the timespan is 12 hours, and for production apps, this is a good
// number. For this example though, it's set to a timespan of zero, so that
// changes in the console will always show up immediately.
public Task FetchDataAsync() {
  DebugLog("Fetching data...");
  System.Threading.Tasks.Task fetchTask =
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.FetchAsync(
      TimeSpan.Zero);
  return fetchTask.ContinueWithOnMainThread(FetchComplete);
}

В приведенном выше коде FetchComplete — это метод, сигнатура которого соответствует параметрам одной из перегруженных версий ContinueWithOnMainThread() .

В приведенном ниже примере кода методу FetchComplete передается предыдущая задача ( fetchTask ), что позволяет FetchComplete определить, завершена ли она. Код использует Info.LastFetchStatus , чтобы затем определить, было ли завершение также успешным. Если это так, значения параметров Remote Config затем активируются с помощью activateAsync() .

private void FetchComplete(Task fetchTask) {
  if (!fetchTask.IsCompleted) {
    Debug.LogError("Retrieval hasn't finished.");
    return;
  }

  var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
  var info = remoteConfig.Info;
  if(info.LastFetchStatus != LastFetchStatus.Success) {
    Debug.LogError($"{nameof(FetchComplete)} was unsuccessful\n{nameof(info.LastFetchStatus)}: {info.LastFetchStatus}");
    return;
  }

  // Fetch successful. Parameter values must be activated to use.
  remoteConfig.ActivateAsync()
    .ContinueWithOnMainThread(
      task => {
        Debug.Log($"Remote data loaded and ready for use. Last fetch time {info.FetchTime}.");
    });
}

Значения, полученные с помощью FetchAsync() кэшируются локально после завершения выборки, но не становятся доступными до тех пор, пока не будет вызвана ActivateAsync() . Это позволяет гарантировать, что новые значения не будут применены в середине расчета или в другое время, которое может вызвать проблемы или странное поведение.

Шаг 7: (Необязательно) Включите режим разработчика

Чтобы включить режим разработчика, который можно использовать для отключения регулирования во время разработки, вы можете использовать свойство FirebaseRemoteConfig.Setting , задав для нового ConfigSettings значение IsDeveloperMode , равное true.

Next steps

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: