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