Статьи

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

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

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

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

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

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

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

С помощью Firebase Assistant в Android Studio добавление Remote Config в ваш проект занимает всего несколько щелчков мыши.

Для начала перейдите в Инструменты> Firebase и выберите Remote Config> Настроить Firebase Remote Config на появившейся панели.

Firebase Assistant for Remote Config

Затем нажмите кнопку « Подключиться к Firebase» , чтобы связать проект Android Studio с проектом Firebase. В появившемся диалоговом окне выберите параметр « Создать новый проект Firebase» и нажмите кнопку « Подключиться к Firebase» .

Connect to Firebase dialog

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

Project changes prompt

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

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

Remote Config welcome screen

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

Parameter creation dialog

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

List of parameters

Чтобы использовать созданные нами параметры, добавьте виджет 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)

Наше приложение должно работать правильно при первом открытии, даже если пользователь не подключен к Интернету. Следовательно, ему необходимо знать как имена, так и значения по умолчанию наших параметров 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 готов, и мы можем начать использовать значения, которые он предоставляет.

Экземпляр 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.

App running with default values

Прямо сейчас клиент 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»)
}

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

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

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

Updated values for the parameters

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

App running with latest values from Firebase

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

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

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

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

Add value for condition field

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

Condition creation dialog

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

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

Conditional values dialog

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

Same app running on devices in different countries

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

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

  • Android SDK
    Как кодировать навигационный ящик для приложения Android
    Чике Мгбемена
  • Android SDK
    Создание музыкального приложения с помощью шаблона приложения для Android
    Чике Мгбемена
  • Android SDK
    Создание доступных приложений для Android
    Джессика Торнсби