Начните работу с удаленной настройкой на Flutter

Выберите платформу: iOS+ Android Web Flutter Unity C++


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

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

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

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

  3. Для установки плагина Remote Config выполните следующую команду из корневого каталога вашего Flutter-проекта:

    flutter pub add firebase_remote_config
    

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

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

    flutter run
    
  5. Если вы используете Remote Config на macOS, включите функцию «Совместное использование связки ключей» в Xcode.

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

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

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

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

В процессе разработки рекомендуется устанавливать относительно низкий минимальный интервал выборки. Дополнительную информацию см. в разделе «Ограничение скорости» .

Шаг 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. Чтобы просмотреть панель мониторинга удаленной конфигурации, выберите в меню пункт «Удаленная конфигурация» .
  3. Определите параметры с теми же именами, что и параметры, определенные в вашем приложении. Для каждого параметра вы можете установить значение по умолчанию (которое в конечном итоге переопределит соответствующее значение по умолчанию в приложении), а также задать условные значения. Для получения дополнительной информации см. раздел «Параметры и условия удаленной конфигурации» .

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

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

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

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

    await remoteConfig.fetchAndActivate();
    

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

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

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

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

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

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

Регулирование скорости

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

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

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

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