Firebase Remote Config provides lots of flexibility for how and when to fetch new values from the server and activate them in your app, allowing you to ensure a quality end user experience by controlling the timing of any visible configuration changes. You can fetch new values on application launch using fetchAndActivate() , and use real-time Remote Config as a complementary method to automatically fetch the latest parameter values after a new version of your Remote Config is published.
В этом руководстве рассматриваются несколько стратегий загрузки и обсуждаются ключевые моменты, которые следует учитывать при выборе оптимального варианта для вашего приложения.
Стратегия 1: Загрузка и активация при загрузке.
In this strategy, your app would call fetchAndActivate() when your app first starts up to fetch new values from Remote Config and activate them as soon as they are done loading. This simple approach works well for configuration changes that don't cause any dramatic visual changes in your UI. It should be avoided in any situation where your UI could change noticeably while users are in the middle of using it.
After your app calls fetchAndActivate() , it can start listening for parameter value updates in real time by calling addOnConfigUpdateListener . This method starts listening for any server-side updates to parameter values, fetches them automatically, then calls the listener. A simple strategy is to activate the new values in the listener. However, as mentioned for fetchAndActivate() , activating immediately should be avoided for sensitive UIs.
Стратегия 2: Активировать за экраном загрузки
В качестве решения потенциальной проблемы с пользовательским интерфейсом, выявленной в стратегии 1, можно использовать экран загрузки. Вместо того чтобы сразу запускать приложение, покажите экран загрузки и вызовите функцию fetchAndActivate в обработчике завершения. Затем сразу после этого — снова используя обратный вызов или уведомление — закройте экран загрузки и позвольте пользователю начать взаимодействовать с вашим приложением.
При использовании этой стратегии рекомендуется добавить тайм-аут на экран загрузки. Тайм-аут в Remote Config, составляющий одну минуту, может быть слишком долгим для качественного запуска приложения для пользователей.
Отслеживание обновлений Remote Config в реальном времени с помощью вызова addOnConfigUpdateListener хорошо сочетается с этой стратегией. Добавьте слушатель при отображении экрана загрузки, а затем используйте activate() в одной или нескольких точках вашего приложения, где значения Remote Config не вызовут существенных визуальных изменений.
Стратегия 3: Загрузка новых значений для следующего запуска.
Эффективная стратегия заключается в загрузке новых значений конфигурации для активации при следующем запуске приложения. В этой стратегии приложение активирует полученные значения при запуске, прежде чем пытаться получить новые, исходя из предположения, что оно, возможно, уже получило — но еще не активировало — новые значения конфигурации. Порядок действий для этой стратегии следующий:
- При запуске немедленно активируются ранее полученные значения. Это применяет все значения, загруженные с сервера в предыдущей сессии, и происходит практически мгновенно.
- Пока пользователь взаимодействует с вашим приложением, запустите асинхронный вызов для получения новых значений в соответствии с минимальным интервалом выборки по умолчанию и добавьте слушатель обновления конфигурации в реальном времени. Слушатель обновления в реальном времени будет автоматически получать любые значения, опубликованные на сервере во время работы вашего приложения. Обновления в реальном времени обходят настройку минимального интервала выборки.
- В обработчике завершения или в функции обратного вызова для запроса fetch ничего не делайте. Ваше приложение сохранит загруженные значения до тех пор, пока вы не активируете их при следующем запуске.
Благодаря этой стратегии время ожидания пользователя значительно сокращается. Сочетание стратегий получения данных и прослушивания событий в реальном времени с вызовами activate() по мере необходимости в жизненном цикле приложения гарантирует, что пользователи будут получать самые актуальные значения из Remote Config при взаимодействии с вашим приложением.
Загрузка антистратегий
Как вы, возможно, поняли из приведенного выше обсуждения преимуществ и недостатков загрузки, существует несколько моделей использования, которых следует избегать.
- Не обновляйте и не изменяйте элементы пользовательского интерфейса, пока пользователь просматривает его или взаимодействует с ним, — за исключением случаев, когда для этого есть веские причины, связанные с приложением или бизнесом, например, удаление опций, относящихся к только что завершившейся акции.
- Don't send mass numbers of simultaneous fetch requests, which could result in the server throttling your app. If you need to fetch updates frequently, use real-time Remote Config . While the risk of throttling is low in most production scenarios, it can be an issue during active development—and real-time Remote Config is designed for this use case. Check out the throttling guidance .
- Не полагайтесь на сетевое соединение для получения значений Remote Config . Установите значения параметров по умолчанию в приложении, чтобы оно всегда работало должным образом. Вы можете периодически синхронизировать значения по умолчанию приложения и бэкэнда Remote Config используя загруженные шаблоны значений по умолчанию .
Следующие шаги
Эти три основные стратегии никоим образом не представляют собой полный список способов загрузки значений конфигурации. В зависимости от ваших потребностей вы можете разработать гораздо более сложные стратегии.
Для получения более подробной информации о конкретных вызовах для получения и активации значений конфигурации ознакомьтесь со справочником API для вашей платформы.