Стратегии загрузки Firebase Remote Config

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

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

Стратегия 1: получение и активация при загрузке

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

После того как ваше приложение вызовет fetchAndActivate() , оно может начать прослушивание обновлений значений параметров в режиме реального времени, вызвав addOnConfigUpdateListener . Этот метод начинает прослушивать любые обновления значений параметров на стороне сервера, автоматически извлекает их, а затем вызывает прослушиватель. Простая стратегия состоит в том, чтобы активировать новые значения в прослушивателе. Однако, как упоминалось для fetchAndActivate() , следует избегать немедленной активации для чувствительных пользовательских интерфейсов.

Стратегия 2: активировать за экраном загрузки

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

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

Прослушивание обновлений Remote Config в режиме реального времени с помощью вызова addOnConfigUpdateListener хорошо работает с этой стратегией. Добавьте прослушиватель при отображении экрана загрузки, а затем используйте activate() в одной или нескольких точках вашего приложения, где значения Remote Config не вызовут резких визуальных изменений.

Стратегия 3: загрузить новые значения для следующего запуска

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

  1. При запуске немедленно активировать ранее полученные значения. Это применяет любые значения, которые вы загрузили с сервера в предыдущем сеансе, и происходит практически мгновенно.
  2. Пока пользователь взаимодействует с вашим приложением, запустите асинхронный вызов для получения новых значений в соответствии с минимальным интервалом выборки по умолчанию и добавьте прослушиватель обновления конфигурации в реальном времени. Слушатель в реальном времени будет автоматически извлекать любые значения, которые публикуются на сервере во время работы вашего приложения. Обновления в реальном времени обходят настройку минимального интервала выборки.
  3. В обработчике завершения или обратном вызове для вызова fetch ничего не делайте. Ваше приложение сохранит загруженные значения, пока вы не активируете их при следующем запуске приложения.

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

Загрузка антистратегий

Как вы, возможно, поняли из приведенного выше обсуждения плюсов и минусов загрузки, есть несколько шаблонов использования, которых следует избегать.

  • Не обновляйте и не переключайте аспекты пользовательского интерфейса, пока пользователь просматривает его или взаимодействует с ним, если только у вас нет для этого веских причин, связанных с приложением или бизнесом, например удаление параметров, связанных с только что завершившейся рекламной акцией.
  • Не отправляйте большое количество одновременных запросов на выборку, поскольку это может привести к регулированию вашего приложения сервером. Если вам нужно часто получать обновления, используйте Remote Config в режиме реального времени . Хотя в большинстве производственных сценариев риск дросселирования невелик, он может стать проблемой во время активной разработки, и Remote Config в реальном времени предназначен именно для этого случая использования. Ознакомьтесь с руководством по дросселированию .
  • Не полагайтесь на сетевое подключение для получения значений Remote Config. Установите значения параметров по умолчанию в приложении, чтобы ваше приложение всегда вело себя так, как ожидается. Вы можете периодически синхронизировать значения по умолчанию приложения и серверной части Remote Config, используя значения по умолчанию загруженного шаблона .

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

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

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