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


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

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

  1. Установите и инициализируйте Firebase SDKs для Flutter, если вы еще этого не сделали.

  2. Для Remote Config требуется Google Analytics для условного таргетинга экземпляров приложения на свойства и аудитории пользователя. Убедитесь, что вы включили Google Analytics в своем проекте.

  3. Из корневого каталога вашего проекта Flutter выполните следующую команду, чтобы установить плагин Remote Config:

    flutter pub add firebase_remote_config
    

    Кроме того, в рамках настройки Remote Config вам необходимо добавить Firebase SDK для Google Analytics в ваше приложение:

    flutter pub add firebase_analytics
    
  4. Перестройте свой проект:

    flutter run
    
  5. Если вы используете Remote Config в macOS, включите функцию Keychain Sharing в Xcode.

Шаг 2: Получите объект-синглтон Remote Config

Получите экземпляр объекта Remote Config и задайте минимальный интервал выборки, чтобы обеспечить частое обновление:

final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
    fetchTimeout: const Duration(minutes: 1),
    minimumFetchInterval: const Duration(hours: 1),
));

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

Во время разработки рекомендуется установить относительно небольшой минимальный интервал выборки. Подробнее см. в разделе «Регулирование» .

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

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

await remoteConfig.setDefaults(const {
    "example_param_1": 42,
    "example_param_2": 3.14159,
    "example_param_3": true,
    "example_param_4": "Hello, world!",
});

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

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

Чтобы получить эти значения, вызовите указанный ниже метод, который сопоставляется с типом данных, ожидаемым вашим приложением, указав ключ параметра в качестве аргумента:

  • getBool()
  • getDouble()
  • getInt()
  • getString()

Шаг 5: Задайте значения параметров в бэкэнде Remote Config

Используя консоль Firebase или API-интерфейсы Remote Config , вы можете создавать новые значения по умолчанию на стороне сервера, которые переопределяют значения в приложении в соответствии с желаемой условной логикой или таргетингом пользователей. В этом разделе описываются шаги по созданию этих значений в консоли Firebase.

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

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

  1. Чтобы получить значения параметров из бэкенда Remote Config, вызовите метод fetch() . Все значения, заданные в бэкенде, извлекаются и сохраняются в объекте Remote Config.

  2. Чтобы сделать извлеченные значения параметров доступными для вашего приложения, вызовите метод activate() .

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

    await remoteConfig.fetchAndActivate();
    

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

Шаг 7: Следите за обновлениями в режиме реального времени

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

Обратите внимание, что функция удаленной настройки в реальном времени недоступна для веб-интерфейса.

  1. В своем приложении используйте onConfigUpdated , чтобы начать прослушивание обновлений и автоматически получать любые новые значения параметров.

     remoteConfig.onConfigUpdated.listen((event) async {
       await remoteConfig.activate();
    
       // Use the new config values here.
     });
    
  2. В следующий раз, когда вы опубликуете новую версию вашей удаленной конфигурации, устройства, на которых запущено ваше приложение и которые отслеживают изменения, активируют новую конфигурацию.

Регулирование

Если приложение выполняет выборку слишком много раз за короткий промежуток времени, вызовы выборки будут ограничены, а значение свойства lastFetchStatus объекта FirebaseRemoteConfig будет равно RemoteConfigFetchStatus.throttle .

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

Если во время разработки приложения вы не используете функцию удалённой конфигурации в реальном времени (которую мы рекомендуем), вам может потребоваться получать и активировать конфигурации очень часто (несколько раз в час), чтобы обеспечить быструю итерацию в процессе разработки и тестирования приложения. Чтобы обеспечить быструю итерацию в проекте с числом разработчиков до 10, можно временно задать небольшой минимальный интервал выборки с помощью setConfigSettings() .

final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
    fetchTimeout: const Duration(minutes: 1),
    minimumFetchInterval: const Duration(minutes: 5),
));

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

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