Firebase Remote Config — это уникальный сервис, разработанный для того, чтобы предоставить вам детальный контроль над экземплярами ваших приложений, пока они установлены на пользовательских устройствах. Используя его, вы можете надежно изменять внешний вид и поведение ваших приложений по всей базе пользователей без публикации обновлений в Google Play.
Если вы думаете, что это может быть угрозой безопасности, позвольте мне заверить вас, что Remote Config не позволяет вам удаленно внедрять новый код в ваши приложения. Это только позволяет вам изменять через консоль Firebase значения определенных заранее определенных переменных, которые уже присутствуют в коде. Фактически, вы можете рассматривать переменные как переменные на стороне сервера, от которых зависит ваше приложение.
В этом уроке я покажу вам, как использовать некоторые из самых мощных функций Remote Config в приложениях Android.
1. Зачем использовать удаленную настройку?
Remote Config API в первую очередь предназначен для использования в качестве альтернативы простым жестко заданным значениям в ваших приложениях. Примерами таких значений могут быть цвета, размеры, задержки и метки.
Чтобы лучше понять значение API, рассмотрим следующий сценарий: вы создаете и публикуете приложение с жестко заданными значениями размера шрифта и цвета всех его меток. Через несколько дней ваши пользователи скажут вам, что они предпочитают больший размер шрифта и другой цвет шрифта. Поскольку значения жестко запрограммированы, теперь для их изменения вам придется изменить код, собрать приложение заново, присвоив ему новый номер версии, и повторно опубликовать его в Google Play. Это большая работа для такого мелкого исправления. Более того, если пользователи передумают, вам придется делать это снова и снова!
С помощью Firebase Remote Config вы можете дистанционно настраивать переменные размера и цвета шрифта и использовать консоль Firebase для быстрого изменения их значений в любое время и столько раз, сколько захотите. Этот современный подход также гарантирует, что изменения произойдут как можно скорее на устройствах всех ваших пользователей, без необходимости загружать обновления вручную.
2. Настройка проекта
С помощью Firebase Assistant в Android Studio добавление Remote Config в ваш проект занимает всего несколько щелчков мыши.
Для начала перейдите в Инструменты> Firebase и выберите Remote Config> Настроить Firebase Remote Config на появившейся панели.
Затем нажмите кнопку « Подключиться к Firebase» , чтобы связать проект Android Studio с проектом Firebase. В появившемся диалоговом окне выберите параметр « Создать новый проект Firebase» и нажмите кнопку « Подключиться к Firebase» .
После успешного подключения вы можете нажать кнопку « Добавить удаленную конфигурацию в приложение» , чтобы добавить все необходимые зависимости в файлы Gradle вашего проекта. При появлении запроса нажмите кнопку « Принять изменения» для завершения настройки проекта.
3. Определение параметров конфигурации
Все переменные, которые вы хотите изменить удаленно, должны быть определены в вашем проекте Firebase как параметры Remote Config. Поэтому используйте браузер для входа в консоль Firebase , прокрутите раздел « Обзор проекта », чтобы найти карту удаленной настройки , и нажмите кнопку « Начать» .
На экране приветствия службы удаленной настройки нажмите кнопку Добавить свой первый параметр , чтобы начать добавление переменных.
Давайте теперь определим два параметра: font_size
и font_color
. Первый должен быть числом, а второй — строкой. Убедитесь, что вы назначаете разумные значения по умолчанию для обоих.
Теперь вы сможете увидеть два созданных вами параметра. Однако их значения не будут доступны вашему приложению, если вы не опубликуете их. Поэтому нажмите кнопку « Опубликовать изменения» .
4. Подготовка макета
Чтобы использовать созданные нами параметры, добавьте виджет TextView
отображающий сообщение в XML-файле макета вашей деятельности. Если вы создали новый проект Android Studio для этого урока, не стесняйтесь использовать виджет TextView
«Hello World», доступный по умолчанию, но не забудьте указать его идентификатор.
1
2
3
4
5
6
7
8
9
|
<TextView
android:layout_width=»wrap_content»
android:layout_height=»wrap_content»
android:text=»This is a test!»
android:id=»@+id/my_message»
app:layout_constraintBottom_toBottomOf=»parent»
app:layout_constraintLeft_toLeftOf=»parent»
app:layout_constraintRight_toRightOf=»parent»
app:layout_constraintTop_toTopOf=»parent» />
|
Внутри onCreate()
вашей деятельности теперь вы можете получить ссылку на виджет с findViewById()
метода findViewById()
.
1
|
val myMessage = findViewById<TextView>(R.id.my_message)
|
5. Инициализация удаленной настройки
Наше приложение должно работать правильно при первом открытии, даже если пользователь не подключен к Интернету. Следовательно, ему необходимо знать как имена, так и значения по умолчанию наших параметров Remote Config. Создание карты для их хранения — хорошая идея.
1
2
3
4
|
val defaults = mapOf(
«font_size» to 18,
«font_color» to «#ff0000»
)
|
Обратите внимание, что имена и значения по умолчанию должны быть идентичны их аналогам в консоли Firebase.
Теперь мы можем инициализировать клиента для службы удаленной defaults
карту defaults
по defaults
. Для этого сначала создайте экземпляр клиента, вызвав метод getInstance()
класса FirebaseRemoteConfig
, а затем передайте карту его setDefaults()
.
1
2
|
val remoteConfig = FirebaseRemoteConfig.getInstance()
remoteConfig.setDefaults(defaults)
|
На этом этапе клиент Remote Config готов, и мы можем начать использовать значения, которые он предоставляет.
6. Использование значений по умолчанию
Экземпляр FirebaseRemoteConfig
предлагает несколько интуитивно названных методов, которые можно использовать для получения значений параметров Remote Config. Например, вы можете вызвать метод getDouble()
для получения значений, которые являются числами. Точно так же вы можете вызвать метод getString()
для получения значений, которые являются строками.
В следующем коде показано, как извлечь значения параметров font_size
и font_color
.
1
2
|
val fontSize = remoteConfig.getDouble(«font_size»)
val fontColor = remoteConfig.getString(«font_color»)
|
Если у вас есть значения, вы можете использовать их по своему усмотрению. А пока давайте использовать их, чтобы изменить внешний myMessage
виджета myMessage
.
1
2
|
myMessage.textSize = fontSize.toFloat()
myMessage.setTextColor(Color.parseColor(fontColor))
|
Если вы запустите приложение сейчас, вы сможете увидеть виджет TextView
используя значения по умолчанию параметров Remote Config.
7. Получение последних значений
Прямо сейчас клиент Remote Config просто возвращает значения из карты, которую мы ему передали. Чтобы позволить ему использовать значения, полученные из Firebase, мы должны вызвать его метод activateFetched()
.
1
|
remoteConfig.activateFetched()
|
Однако метод activateFetched()
фактически не извлекает значения из Firebase. Поэтому мы должны вызвать метод fetch()
next, который работает асинхронно, чтобы получить значения.
1
|
remoteConfig.fetch()
|
Если вы запустите приложение на этом этапе, оно все равно будет использовать значения по умолчанию. Однако, если вы подождете несколько секунд, закроете его и снова откроете, он начнет использовать значения, введенные вами в консоли Firebase.
Обычно рекомендуется, чтобы измененные значения вступили в силу только при следующем открытии приложения пользователями. Вы можете прикрепить прослушиватель к объекту Task
возвращенному методом fetch()
и обновить свой пользовательский интерфейс внутри прослушивателя, но вашим пользователям может не понравиться резкое изменение.
Однако вы можете использовать прослушиватель для целей отладки.
1
2
3
|
remoteConfig.fetch().addOnSuccessListener {
Log.i(TAG, «Fetched values successfully»)
}
|
8. Изменение ценностей
В настоящее время значения на карте соответствуют удаленным значениям. Чтобы увидеть службу Remote Config в действии, мы должны изменить значения, которые мы упоминали в консоли Firebase. Вернитесь к консоли и нажмите на один из параметров, которые вы видите в разделе «Удаленная настройка».
В появившемся диалоговом окне оставьте поле ключа параметра без изменений, но измените значение. Точно так же вы можете изменить значение другого параметра.
Наконец, убедитесь, что вы нажимаете кнопку « Опубликовать изменения» , чтобы значения стали доступны клиенту Remote Config.
Если вы откроете приложение сейчас, закроете его и откроете снова, вы должны увидеть, что виджет TextView
выглядит иначе.
9. Добавление условий к параметрам
Вам не всегда нужно выдавать одинаковые значения Remote Config всем вашим пользователям. Консоль Firebase позволяет вам добавлять условия к вашим параметрам, чтобы они возвращали разные значения различным подмножествам вашей пользовательской базы. Есть много правил, которые вы можете использовать для создания таких подмножеств. Например, вы можете настроить таргетинг на пользователей, принадлежащих к определенной стране, пользователей с устройствами под управлением определенной версии Android или даже на пользователей, говорящих на определенном языке.
Поскольку Firebase управляет ими прозрачно, вам не нужно вносить какие-либо изменения в ваш код для обработки условий, связанных с вашими параметрами.
Для примера давайте теперь добавим условие к параметру font_color
, чтобы его значение было синим только для индийских пользователей.
Начните с нажатия на параметр в консоли Firebase. В появившейся форме щелкните раскрывающееся поле « Добавить значение для условия» и выберите « Определить новое условие» .
В открывшемся диалоговом окне вы сможете дать имя своему условию и в раскрывающемся списке « Применить, если …» выбрать различные параметры, которые позволят вам сосредоточиться на определенной группе пользователей. , Чтобы настроить таргетинг на пользователей определенной страны, вам нужно будет выбрать опцию Страна / Регион . В списке, который появляется рядом с ним, вы можете выбрать одну или несколько стран. Выберите Индию здесь.
Заполнив все поля, нажмите кнопку « Создать условие» , чтобы завершить условие.
На этом этапе ваш параметр сможет принимать два значения вместо одного. Оставьте поле Значение по умолчанию как есть и введите шестнадцатеричный код для синего цвета в поле условного значения.
Если вы опубликуете изменения сейчас, пользователи в Индии получат дополнительное обновление, и текст в виджете TextView
станет для них синим.
Вывод
Теперь вы знаете, как удаленно изменять приложение, используя Firebase Remote Config и консоль Firebase. Благодаря некоторой креативности, вы можете многое сделать с сервисом, чтобы улучшить взаимодействие с пользователем вашего приложения. Например, большинство разработчиков сегодня используют это, чтобы изменить темы своих приложений, чтобы отметить праздничные дни. Многие также используют его с Firebase Analytics для запуска A / B-тестов на своих пользовательских базах.
Чтобы узнать больше о Remote Config, обратитесь к официальной документации .