Содержание
- Содержание
- Обзор
- Параметр “Условное значение”
- Параметр “Эксперимент”
- Параметр “Персонализация”
- Как настроить Firebase Remote Config
- Шаг #1 - Добавьте библиотеку удаленной конфигурации Firebase в свой проект внутри файла build.gradle вашего приложения.
- Шаг #2 - Используйте объект RemoteConfig
- Шаг #3 - Определите интервал получения
- Шаг #4 - Установите конфигурацию для удаленной конфигурации
- Шаг #5 - Установите значения по умолчанию
- Шаг 6 - Доступ к конфигурациям
- Заключение
Удаленная конфигурация (Remote Config) полезна, потому что она позволяет изменять поведение вашего приложения без необходимости выпуска новой версии приложения. Одним из ярких примеров является использование удаленной конфигурации для решения, следует ли включать или выключать какую-либо функцию. Таким образом, вы можете постепенно внедрять ее в производство или тестировать реакцию пользователей.
Если вы хотите, чтобы ваше приложение обладало этой функциональностью, обычно вам пришлось бы создавать свой сервер и его логику. Но сейчас мы живем в эпоху технологических инноваций, и были созданы инструменты, которые помогают уменьшить время разработки.
Этот инструмент называется Firebase Remote Config - это облачная служба, которая позволяет вам изменять различные функции вашего приложения без выпуска обновлений или просьбы пользователей обновить приложение.
Содержание
Обзор
Вы можете получить доступ к функции Удаленной конфигурации в консоли Firebase вашего проекта. Обычно она находится в разделе “Выпуск и мониторинг” в левой боковой панели.

Существует два способа определения удаленных конфигураций:
- С использованием Firebase.
- С использованием шаблонного файла в формате JSON.
Мы сосредоточимся на первом варианте, так как второй вариант менее интуитивен.
Firebase Remote Config позволяет вам определить один или несколько ключей во время настройки. Ключи могут иметь следующие типы:
Эти ключи используются в качестве конфигураций для вашего приложения. Например, если у вас есть функция в вашем приложении, которую вы хотели бы управлять с помощью удаленных конфигураций, вы можете определить ключ Boolean с названием “enableFeatureX”.

Каждый установленный вами ключ имеет еще несколько настроек, которые могут быть вам полезны. Например, вы можете определить значение по умолчанию для ключа (например, ложь может быть значением по умолчанию для ключа Boolean) или использовать значение, которое вы определили в вашем приложении.
Еще одна интересная вещь, которую вы можете сделать, нажав на кнопку “Добавить новый” на изображении выше, - это установить значение ключа на основе определенных факторов. Вы увидите эти параметры, когда нажмете на кнопку:
- Условное значение.
- Эксперимент.
- Персонализация.
Когда вы закончите добавление ключа, не забудьте опубликовать свои изменения, чтобы они были развернуты.
Параметр “Условное значение”
Вы можете настроить, как будет устанавливаться значение для конкретных пользователей на основе различных условий.

Здесь вы можете решить, что и как вы хотите тестировать. Вы обнаружите несколько вариантов, когда щелкнете по выпадающему списку “Применяется, если”.
Для иллюстрации использования этой функции, предположим, что вы хотите нацелиться на пользователей iOS в США. Вы можете сделать это, используя выпадающий список “Применяется, если” и выбрав Платформу, а затем iOS.
Затем вы можете нажать кнопку “и” для добавления условия для Страна/Регион и выбрать Соединенные Штаты.

Убедитесь также, что вы дали имя своему условию, иначе кнопка “Создать условие” не будет активной.
Обратите внимание, какое количество пользователей будет затронуто этим условием, последнее поле в окне определения нового условия сообщает вам об этом? Это довольно удобная функция.
Параметр “Эксперимент”
Этот параметр позволяет вам изменить поведение значения в ваших удаленных конфигурациях до того, как оно начнет влиять на всех ваших пользователей.

Вы можете следовать этим шагам для настройки параметра “Эксперимент”:
- На первом шаге вам нужно заполнить имя и описание вашего эксперимента.
- Затем вы выбираете, на какое приложение направлен эксперимент и сколько пользователей он затронет (в процентном отношении).
- Третий шаг - настройка метрик для измерения этого эксперимента. Существует два типа метрик - основные метрики и дополнительные метрики.
- Наконец, вы можете решить, сколько будет групп A/B-тестирования для этого эксперимента.
Параметр “Персонализация”
Последнее, но не менее важное, это возможность настроить конкретное значение ваших удаленных конфигураций для пользователя на основе его собственного поведения.

Каждый из этих параметров имеет гораздо больше возможностей, чем я описал здесь, поэтому, если вы хотите узнать больше, вы можете воспользоваться одной из ссылок на справку внизу. Теперь, когда мы понимаем, что такое Удаленная конфигурация, давайте посмотрим, как мы можем добавить ее в наше приложение.
Как настроить Firebase Remote Config
Прежде чем заниматься чем-либо, связанным с применением удаленных конфигураций, убедитесь, что вы добавили Firebase в свой проект Android. Это документировано здесь.
После того, как вы сделали это, следуйте этим шагам:
Шаг #1 - Добавьте библиотеку удаленной конфигурации Firebase в свой проект внутри файла build.gradle вашего приложения.
implementation 'com.google.firebase:firebase-config-ktx'
Существует также опция импорта модуля Firebase Analytics, но он не требуется для удаленных конфигураций. Он используется в других областях удаленных конфигураций, таких как определение условия на основе определенного события.
Шаг #2 - Используйте объект RemoteConfig
После синхронизации вашего проекта, вы можете получить доступ к объекту RemoteConfig с помощью этой команды:
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
Шаг #3 - Определите интервал получения
Вы можете определить, как часто ваши удаленные конфигурации будут получены и обновлены. Когда вы все еще разрабатываете свое приложение, установка этого числа относительно низким является более идеальным.
val remoteConfigSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 2000
}
Если вы установите значение minimumFetchIntervalInSeconds слишком низким, Firebase выдаст исключение FirebaseRemoteConfigFetchThrottledException, поэтому используйте низкое число только при тестировании.
Шаг #4 - Установите конфигурацию для удаленной конфигурации
Вы можете установить удаленную конфигурацию с помощью следующего кода:
remoteConfig.setConfigSettingsAsync(remoteConfigSettings);
Шаг #5 - Установите значения по умолчанию
Вы можете установить значения по умолчанию для конфигурации вашего приложения. Их можно создать в виде XML-файла внутри директории XML внутри папки res. Вот, как выглядит код:
:remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Этот XML-файл должен иметь базовый элемент map, чтобы обернуть все ваши значения по умолчанию. Например, предположим, у нас есть ключ в удаленной конфигурации, названный my_key, значение которого равно 1. XML-файл с значениями по умолчанию будет выглядеть следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
<entry>
<key>my_key</key>
<value>1</value>
</entry>
</defaultsMap>
Для получения и активации удаленных конфигураций необходимо выполнить два этапа. Действие “fetch” получает и сохраняет ваши удаленные конфигурации в объект Remote Config. Часть “активация” заключается в предоставлении этих значений вашему приложению. Поэтому существуют два метода API: “fetch” (и позднее “activate”).
remoteConfig.fetch().addOnCompleteListener { task -> if if (task.isSuccessful) {
//Remote Configurations fetch successfully
}
}.addOnFailureListener { error ->
//Remote Configurations fetch failure
}
-------------------------
remoteConfig.activate().addOnCompleteListener { task ->
if (task.isSuccessful) {
//Remote Configurations activation success
}
}.addOnFailureListener { error ->
//Remote Configurations activation failure
}
remoteConfig.fetchAndActivate().addOnCompleteListener { task -> if (task.isSuccessful) {
//Remote Configurations fetched and activated successfully }
}.addOnFailureListener { error ->
//Remote Configurations fetched and activated failure
}
Шаг 6 - Доступ к конфигурациям
Теперь, когда наши удаленные конфигурации были получены и активированы, мы можем получить к ним доступ и использовать их в нашем приложении. Для этого мы можем обратиться к объекту remoteConfig и использовать один из методов-геттеров в соответствии с типом значения, которое мы установили:
val myRemoteConfigValue: String = remoteConfig.getString("my_key")
Заключение
Поскольку ваше приложение зависит от удаленных конфигураций для его работы (или для его частей), важно решить, как приложение будет вести себя, если удаленные конфигурации не поступили или заняли слишком много времени для получения ответа.
В основном существуют два способа обработки загрузки удаленных конфигураций:
- Ваше приложение загружается и ожидает активации удаленных конфигураций.
- Ваше приложение загружается и не ожидает активации удаленных конфигураций. Вместо этого оно использует удаленные конфигурации при втором запуске приложения.
Важно понимать, что нет предпочтительного варианта перед другим. Все зависит от вашего конкретного случая использования и от того, каким вы хотите, чтобы был опыт пользователя при использовании вашего приложения. Первый вариант гарантирует, что после загрузки вашего приложения все удаленные конфигурации, которые вы определили, будут установлены, и опыт пользователя будет гладким после начальной загрузки. Если у вас есть важные функции, которые зависят от удаленных конфигураций, вам, возможно, придется выбрать этот вариант.
С другой стороны, если ваши удаленные конфигурации касаются определенной функции вашего приложения, которая не обязательно должна работать с первого запуска, вы можете рассмотреть второй вариант. Таким образом, ваше приложение не должно ожидать получения удаленных конфигураций из Firebase, и логика внутри вашего приложения может работать позже.
Для каждого из этих методов есть положительные и отрицательные моменты, и решение о том, какой метод лучше всего подходит для вашего приложения, остается за вами. Если вы выберете первый вариант, вы можете добавить экран загрузки, который завершит свою работу после определенного времени. Если вы выберете второй вариант, рекомендуется создать стандартный механизм для функций в вашем приложении и определить, как они должны работать, когда конфигурация еще не была получена.
В этой статье было описано далеко не все, и я настоятельно рекомендую изучить более глубокие аспекты. Недавно я использовал удаленные конфигурации Firebase в приложении, которое позволяет пользователям планировать встречи.
Вы можете ознакомиться с ним в Google Play Store.
Исходный код также доступен здесь:
GitHub - TomerPacific/scheduler: Приложение, которое позволяет пользователям назначать встречи с администратором
Если вы хотите прочитать другие мои статьи, вы можете найти их по следующей ссылке:
GitHub - TomerPacific/MediumArticles: Репозиторий, содержащий код, связанный с различными статьями, которые я написал для Medium
Репозиторий, содержащий код, связанный с различными статьями, которые я написал для Medium - GitHub - TomerPacific/MediumArticles: Репозиторий, содержащий код, связанный с различными статьями, которые я написал для Medium.