Стратегии загрузки 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 и real-time listener с вызовами activate() по мере необходимости в жизненном цикле приложения гарантирует, что пользователи будут иметь последние значения из Remote Config при взаимодействии с вашим приложением.

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

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

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

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

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

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