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: Загрузка новых значений для следующего запуска.
Эффективная стратегия заключается в загрузке новых значений конфигурации для активации при следующем запуске приложения. В этой стратегии приложение активирует полученные значения при запуске, прежде чем пытаться получить новые, исходя из предположения, что оно, возможно, уже получило — но еще не активировало — новые значения конфигурации. Порядок действий для этой стратегии следующий:
- При запуске немедленно активируются ранее полученные значения. Это применяет все значения, загруженные с сервера в предыдущей сессии, и происходит практически мгновенно.
- Пока пользователь взаимодействует с вашим приложением, запустите асинхронный вызов для получения новых значений в соответствии с минимальным интервалом выборки по умолчанию и добавьте слушатель обновления конфигурации в реальном времени. Слушатель обновления в реальном времени будет автоматически получать любые значения, опубликованные на сервере во время работы вашего приложения. Обновления в реальном времени обходят настройку минимального интервала выборки.
- В обработчике завершения или в функции обратного вызова для запроса fetch ничего не делайте. Ваше приложение сохранит загруженные значения до тех пор, пока вы не активируете их при следующем запуске.
Благодаря этой стратегии время ожидания пользователя значительно сокращается. Сочетание стратегий получения данных и прослушивания событий в реальном времени с вызовами activate() по мере необходимости в жизненном цикле приложения гарантирует, что пользователи будут получать самые актуальные значения из Remote Config при взаимодействии с вашим приложением.
Загрузка антистратегий
Как вы, возможно, поняли из приведенного выше обсуждения преимуществ и недостатков загрузки, существует несколько моделей использования, которых следует избегать.
- Не обновляйте и не изменяйте элементы пользовательского интерфейса, пока пользователь просматривает его или взаимодействует с ним, — за исключением случаев, когда для этого есть веские причины, связанные с приложением или бизнесом, например, удаление опций, относящихся к только что завершившейся акции.
- Не отправляйте большое количество одновременных запросов на получение данных, так как это может привести к замедлению работы вашего приложения сервером. Если вам необходимо часто получать обновления, используйте Remote Config в реальном времени . Хотя риск замедления работы сервера низок в большинстве производственных сценариев, он может стать проблемой во время активной разработки — и Remote Config в реальном времени разработана именно для таких случаев. Ознакомьтесь с рекомендациями по замедлению работы сервера .
- Не полагайтесь на сетевое соединение для получения значений Remote Config . Установите значения параметров по умолчанию в приложении, чтобы оно всегда работало должным образом. Вы можете периодически синхронизировать значения по умолчанию приложения и бэкэнда Remote Config используя загруженные шаблоны значений по умолчанию .
Следующие шаги
Эти три основные стратегии никоим образом не представляют собой полный список способов загрузки значений конфигурации. В зависимости от ваших потребностей вы можете разработать гораздо более сложные стратегии.
Для получения более подробной информации о конкретных вызовах для получения и активации значений конфигурации ознакомьтесь со справочником API для вашей платформы.