Firebase remote config android

Firebase Remote Config in an Android app

In this article, we will discuss the advantages, use cases, and tips on the usage of the Firebase Remote Config.

Actually, it’s pretty straightforward. Firebase remote config provides you handy out of the box solution for your app remote configuration. In simple words it does the following:
1. You set certain parameters and values in the Firebase console.
2. You read them in your app
3. You change your app’s behavior depending on received values.

  • Completely free out-of-the-box solution
  • Easy to setup
  • Supports multiple platforms (Android/iOS/WEB)
  • Convenient console
  • Once fetched, the config is being cached in persistent storage on the device
  • Supports setting default values
  • Can easily be used for A/B tests (check it out in my next article)
  • Very flexible in settings different values for different conditions (by build type, country, user’s language, app version, etc.)
  • It’s not intended to be used in real-time. If you change a value in the console — it will take some time for your app to update the config. We will discuss later on how to decrease it or to make it even real-time
  • It may not be available right away (you need to set the default values and stick to certain loading strategy)
  • It may not be available at all in some countries, such as China, where Google services are very limited
  • Is not suitable for storing confidential data
  • You can have up to 2000 parameters. Parameter keys can be up to 256 characters long, must start with an underscore or (A-Z, a-z), and may also include numbers
  • You may have up to 500 conditions
  • The total length of parameter value strings within a project cannot exceed 800,000 characters
  • Feature flag (feature-toggle).
    When you develop a new feature and want to protect your users from possible critical issues. In simple words, in your code you do something like:

And this Boolean flag you read from the config.
So it lets you test new functionality on a limited testing group. Enable for the rest of users in case of successful testing or disable for all the users in case of any issues.

  • Different values for different conditions for the A/B test (check out the details in my next article on A/B tests). For instance, it can be as simple as setting a button color, which will be different for different users, as well as an advanced solution with changing the entire UI and the app behavior.
  • Setting configuration parameters, hosts, and URLs. It gives you the flexibility to change it in case your server has changed or your host was blocked in a certain country.
  • Pass any JSON object. Do everything you want with it.

Integrate it into your app

3. Sync Android Studio project.

Fetch the remote config

In order to get the fresh values from remote you need 2 steps:
1. Fetch the config.
2. Activate it (make freshly loaded one available for you)

Читайте также:  Включить аппаратное ускорение графического процессора андроид

It can be done in various ways by following different strategies.
One simple way can be to do both these steps on the app launch.
For instance, you may do it in your Application class.

Also, there are other fetching strategies, such as activate behind the loading screens or load new values for the next startup.
Get to know the loading strategies here: https://firebase.google.com/docs/remote-config/loading

Note, it’s not recommended to fetch the remote config too often (consider not more often than 5 times in 60 minutes), otherwise, your requests might be throttled and API will fail with an exception FirebaseRemoteConfigFetchThrottledException .

I want it to be real-time

By the way, there is a way to make Remote Config nearly real-time with the use of firebase functions and FCM.

Set a key-value in Firebase console

2. Select the “Remote config” in the menu on the right (under the “Grow” section).

Источник

Firebase Remote Config для Android-приложений

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

Firebase Remote Config — это уникальная служба, предназначенная для тонкого контроля над экземплярами ваших приложений, когда они установлены на пользовательских устройствах. Используя его, вы можете надежно изменять внешний вид и поведение ваших приложений на всей вашей пользовательской базе без публикации обновлений в Google Play.

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

В этом уроке я покажу вам, как использовать некоторые из самых мощных функций Remote Config в приложениях для Android.

1. Зачем использовать удаленную конфигурацию?

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

Чтобы лучше понять значение API, рассмотрите следующий сценарий: вы создаете и публикуете приложение с жестко заданными значениями для размера шрифта и цвета всех его меток. Несколько дней спустя ваши пользователи сообщают, что предпочитают более широкий размер шрифта и другой цвет шрифта. Поскольку значения жестко закодированы, чтобы их изменить, теперь вам нужно будет изменить свой код, снова создать приложение, предоставив ему новый номер версии и опубликовать его в Google Play. Это большая работа для такого незначительного исправления. Более того, если пользователи передумают, вам придется делать это снова и снова!

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

2. Настройка проекта

С помощью Android Studio Firebase Assistant добавление удаленной конфигурации в ваш проект занимает всего несколько кликов.

Начните с Tools > Firebase и выберите Remote Config > Set up Firebase Remote Config в появившейся панели.

Читайте также:  Проект армата для андроид

Затем нажмите кнопку Connect to Firebase, чтобы связать проект Android Studio с проектом Firebase. В появившемся диалоговом окне выберите вариант Create new Firebase project и нажмите кнопку Connect to Firebase.

После успешного подключения вы можете нажать кнопку Add Remote Config to your app, чтобы добавить все необходимые зависимости в файлы Gradle вашего проекта. При появлении подтверждения нажмите кнопку Accept Changes, чтобы завершить настройку проекта.

3. Определение параметров конфигурации

Все переменные, которые вы хотите изменить удаленно, должны быть определены в вашем проекте Firebase в качестве параметров Remote Config. Поэтому используйте браузер для входа в консоль Firebase, прокрутите вниз раздел Project Overview, чтобы найти карточку Remote Config, и нажмите кнопку Get Started.

На экране приветствия службы удаленной конфигурации нажмите кнопку «Добавить свою первую кнопку параметров», чтобы начать добавлять переменные.

Определим теперь два параметра: font_size и font_color . Первый должен быть числом, а второй — строкой. Убедитесь, что вы назначили разумные значения по умолчанию для обоих.

Теперь вы сможете увидеть два параметра, которые вы создали. Однако их значения не будут доступны вашему приложению, если вы их не опубликуете. Поэтому нажмите кнопку «Опубликовать изменения».

4. Подготовка макета

Чтобы иметь возможность использовать созданные нами параметры, добавьте виджет TextView , отображающий сообщение в XML-файле макета вашей активности. Если вы создали новый проект для Android для этого учебника, не стесняйтесь использовать виджет TextView «Hello World» по умолчанию, но удостоверьтесь, что вы указали ему идентификатор.

Внутри метода onCreate() вашей активности теперь вы можете получить ссылку на виджет, используя метод findViewById() .

5. Инициализация удаленной конфигурации

Наше приложение должно работать правильно при первом открытии, даже если пользователь не подключен к Интернету. Поэтому он должен знать как имена, так и значения по умолчанию для параметров Remote Config. Хорошей идеет будет создать хэш для их хранения.

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

Теперь мы можем инициализировать клиент для службы Remote Config, используя map defaults . Для этого сначала создайте экземпляр клиента, вызвав метод getInstance() класса FirebaseRemoteConfig , а затем передайте map его методу setDefaults() .

На данный момент клиент Remote Config готов, и мы можем начать использовать значения, которые он предоставляет.

6. Использование значений по умолчанию

Экземпляр FirebaseRemoteConfig предлагает несколько интуитивно названных методов, которые вы можете использовать для извлечения значений параметров Remote Config. Например, вы можете вызвать метод getDouble() для извлечения значений, которые являются числами. Аналогичным образом вы можете вызвать метод getString() для извлечения значений, которые являются строками.

В следующем коде показано, как получить значения параметров font_size и font_color .

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

Если вы запустите приложение сейчас, вы сможете увидеть виджет TextView , используя значения по умолчанию параметров Remote Config.

7. Получение последних значений

Прямо сейчас клиент Remote Config просто возвращает значения из map, который мы ему передали. Чтобы позволить ему использовать значения, полученные из Firebase, мы должны вызвать его метод activateFetched() .

Однако метод activateFetched() фактически не извлекает значения из Firebase. Поэтому мы должны вызвать следующий метод fetch() , который выполняется асинхронно, чтобы получить значения.

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

Читайте также:  Обои для андроид valhalla

Обычно рекомендуется, чтобы измененные значения вступили в силу только тогда, когда пользователи откроют приложение в следующий раз. Вы можете присоединить слушателя к объекту Task , возвращаемому методом fetch() , и обновить свой пользовательский интерфейс внутри слушателя, но вашим пользователям может не понравиться резкое изменение.

Однако вы можете использовать прослушиватель для целей отладки.

8. Изменение значений

В настоящее время значения в map соответствуют удаленным значениям. Чтобы иметь возможность видеть службу Remote Config в действии, мы должны изменить значения, сохраненные в консоли Firebase. Итак, вернитесь на консоль и нажмите один из параметров, которые вы видите в разделе «Удаленная настройка».

В появившемся диалоговом окне оставьте поле «Параметры» неизменным, но измените значение. Аналогичным образом вы также можете изменить значение другого параметра.

Наконец, убедитесь, что вы нажали кнопку «Опубликовать изменения», чтобы значения стали доступными для клиента Remote Config.

Если вы откроете приложение сейчас, закройте его и откройте его снова, вы увидите, что виджет TextView выглядит иначе.

9. Добавление условий к параметрам

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

Поскольку Firebase управляет ими прозрачно, вам не нужно вносить какие-либо изменения в свой код, чтобы обрабатывать условия, связанные с вашими параметрами.

Для примера добавим условие к параметру font_color , чтобы его значение было голубым для индийских пользователей.

Начните с нажатия на параметр в консоли Firebase. В появившейся форме щелкните поле «Добавить значение для раскрывающегося списка» и выберите «Определить новое условие».

В появившемся диалоговом окне вы сможете указать имя для своего условия, а в раскрывающемся списке «Применяется, если . » выберите ряд параметров, которые позволят вам сосредоточиться на определенной группе пользователей , Чтобы ориентироваться на пользователей определенной страны, вам нужно будет выбрать вариант «Страна/Регион». В списке, который появляется рядом с ним, вы можете выбрать одну или несколько стран. Выберите Индию.

После заполнения всех полей нажмите кнопку «Создать условие», чтобы завершить условие.

На этом этапе ваш параметр сможет принимать два значения вместо одного. Оставьте поле Значение по умолчанию, как есть, и введите шестнадцатеричный код для синего цвета в поле условного значения.

Если вы опубликуете изменения сейчас, пользователи в Индии получат дополнительное обновление, а текст в виджетах TextView станет для них синим.

Вывод

Теперь вы знаете, как удаленно изменять приложение с помощью Firebase Remote Config и консоли Firebase. Добавьте немного креативности и вам станет доступно множество настроек, чтобы улучшить пользовательский интерфейс вашего приложения. Например, большинство разработчиков сегодня используют его для изменения тем своих приложений, чтобы отметить праздничные дни. Многие также используют его с Firebase Analytics для запуска A/B тестов на своих пользовательских базах.

Чтобы узнать больше о Remote Config, обратитесь к официальной документации.

Источник

Оцените статью