1. Введение
Последнее обновление: 09.03.2021
Что такое Firebase Remote Config?
Firebase Remote Config — это облачный сервис, позволяющий изменять поведение и внешний вид вашего приложения без необходимости загрузки обновлений. При использовании Remote Config вы создаете значения по умолчанию внутри приложения, которые управляют его поведением и внешним видом. Затем вы можете использовать консоль Firebase или API бэкэнда Remote Config для переопределения значений по умолчанию для всех пользователей приложения или для отдельных сегментов вашей пользовательской базы. Ваше приложение контролирует, когда применяются обновления, и может часто проверять наличие обновлений и применять их с минимальным влиянием на производительность.
Как это работает?
Remote Config включает в себя клиентскую библиотеку, которая обрабатывает важные задачи, такие как получение значений параметров и их кэширование, при этом предоставляя вам контроль над тем, когда новые значения активируются , чтобы они влияли на пользовательский опыт вашего приложения. Это позволяет защитить работу вашего приложения, контролируя время внесения любых изменений.
Методы get клиентской библиотеки Remote Config предоставляют единую точку доступа к значениям параметров. Ваше приложение получает значения на стороне сервера, используя ту же логику, что и для получения значений по умолчанию внутри приложения, поэтому вы можете добавить возможности Remote Config в свое приложение, не написав большого количества кода.
Чтобы переопределить значения по умолчанию в приложении, вы можете использовать консоль Firebase или API бэкэнда Remote Config для создания параметров с теми же именами, что и параметры, используемые в вашем приложении. Для каждого параметра вы можете установить значение по умолчанию на стороне сервера, чтобы переопределить значение по умолчанию в приложении, а также создать условные значения, чтобы переопределить значение по умолчанию в приложении для экземпляров приложения, которые соответствуют определенным условиям. На этом рисунке показано, как значения параметров расставляются по приоритетам в бэкэнде Remote Config и в вашем приложении:

Что вы узнаете
- Как реализовать Firebase Remote Config
- Как использовать Firebase Remote Config для изменения значений без обновления приложения
Что вам понадобится
- Последняя версия Android Studio
- Аккаунт Firebase
- (Рекомендуется, но необязательно) Физическое устройство Android для запуска вашего приложения.
- Базовые знания Java или Kotlin.
2. Настройка
(Необязательно) Скачайте пример кода
В этом практическом занятии вы создадите собственное тестовое приложение, но если вы хотите посмотреть и запустить существующее тестовое приложение, вы можете скачать пример кода для быстрого запуска.
Нажмите на следующую кнопку, чтобы загрузить весь код для этого практического занятия:
Распакуйте загруженный zip-файл. В результате будет распакована корневая папка с именем quickstart-android-master .
...или клонируйте репозиторий GitHub из командной строки.
$ git clone https://github.com/firebase/quickstart-android.git
Репозиторий содержит несколько папок. Мы будем использовать
папка конфигурации .
(Необязательно) Импортируйте пример кода
Запустите Android Studio, выберите «Импорт проекта» на экране приветствия. Затем откройте загруженную папку и выберите...
Папка config . Затем нажмите «Открыть».

Создать новый проект Android
- В Android Studio создайте новый проект.
- Выберите основное действие
- На экране «Настройте свой проект»:
- Назовите свой проект. Название пакета и место сохранения будут сгенерированы автоматически.
- Язык: Java
- Минимальный уровень SDK: 16
3. Добавьте Firebase и Firebase Analytics в свой Android-проект.
Создайте проект Firebase.
Прежде чем добавить Firebase в ваше Android-приложение, вам необходимо создать проект Firebase для подключения к вашему iOS-приложению. Подробнее о проектах Firebase можно узнать в разделе «Понимание проектов Firebase».
- В консоли Firebase нажмите «Добавить проект» , затем выберите или введите название проекта .

Если у вас уже есть проект в Google Cloud Platform (GCP), вы можете выбрать его из выпадающего меню, чтобы добавить ресурсы Firebase в этот проект.
- (Необязательно) При создании нового проекта вы можете изменить идентификатор проекта .
Firebase автоматически присваивает вашему проекту Firebase уникальный идентификатор. Чтобы узнать, как Firebase использует идентификатор проекта, посетите раздел «Понимание проектов Firebase».
- Нажмите «Продолжить» .
- Настройте Google Analytics для своего проекта, что позволит вам оптимально использовать любой из следующих продуктов Firebase:
- Firebase Crashlytics
- Прогнозы Firebase
- Firebase Cloud Messaging
- Firebase In-App Messaging
- Firebase Remote Config
- A/B-тестирование в Firebase
При появлении запроса выберите, использовать ли существующую учетную запись Google Analytics или создать новую. Если вы выберете создание новой учетной записи, выберите место хранения отчетов Analytics, а затем примите настройки обмена данными и условия использования Google Analytics для вашего проекта.


- Нажмите «Создать проект» (или «Добавить Firebase» , если вы используете существующий проект GCP).
Firebase автоматически выделяет ресурсы для вашего проекта Firebase. После завершения процесса вы перейдете на страницу обзора вашего проекта Firebase в консоли Firebase.
Зарегистрируйте свое приложение в Firebase.
После создания проекта Firebase вы можете добавить в него свое Android-приложение.
Посетите раздел «Понимание проектов Firebase» , чтобы узнать больше о лучших практиках и особенностях добавления приложений в проект Firebase, включая способы обработки нескольких вариантов сборки.
- Перейдите в консоль Firebase.
- В верхней части страницы «Обзор проекта» нажмите на значок Android , чтобы запустить процесс настройки. Если вы уже добавили приложение в свой проект Firebase, нажмите «Добавить приложение», чтобы отобразить параметры платформы.
- Введите имя пакета вашего приложения в поле «Имя пакета Android» .
- (Необязательно) Введите псевдоним приложения .
- Оставьте поле SHA-1 пустым, поскольку SHA-1 не требуется для этого проекта.
- Нажмите «Зарегистрировать приложение» .
Добавьте файл конфигурации Firebase.
Далее вам будет предложено загрузить конфигурационный файл, содержащий все необходимые метаданные Firebase для вашего приложения. Нажмите «Загрузить google-services.json» , чтобы получить конфигурационный файл Firebase для Android ( google-services.json ).


В файле Gradle вашего проекта ( build.gradle ) добавьте правила для включения плагина Google Services Gradle. Также убедитесь, что у вас есть репозиторий Maven от Google.
Файл build.gradle на уровне проекта ( <project>/build.gradle ):
buildscript {
repositories {
// Check that you have the following line (if not, add it):
google() // Google's Maven repository
}
dependencies {
// ...
// Add the following line:
classpath 'com.google.gms:google-services:4.3.5' // Google Services plugin
}
}
allprojects {
// ...
repositories {
// Check that you have the following line (if not, add it):
google() // Google's Maven repository
// ...
}
}
В файле Gradle вашего модуля (уровня приложения) (обычно app/build.gradle ) примените плагин Google Services Gradle:
Файл build.gradle на уровне приложения ( <project>/<app-module>/build.gradle ):
применить плагин: 'com.android.application'
// Добавьте следующую строку:
apply plugin: 'com.google.gms.google-services' // Плагин Google Services
андроид {
// ...
}
Добавьте SDK Firebase в ваше Android-приложение.
Для удаленной настройки требуется Google Analytics для условного таргетирования экземпляров приложения в соответствии со свойствами пользователей и аудиториями. Убедитесь, что Google Analytics включен в вашем проекте.
(Это уже сделано в примере кода для быстрого запуска)
Используя Firebase Android BoM , укажите зависимость от библиотеки Remote Config Android в файле Gradle вашего модуля (уровня приложения) (обычно app/build.gradle ). Благодаря использованию Firebase Android BoM ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.
Кроме того, в рамках настройки Google Analytics вам необходимо добавить в ваше приложение Firebase SDK для Google Analytics. В разделе зависимостей добавьте следующий код:
app/build.gradle
dependencies {
// Import the BoM for the Firebase platform
implementation platform('com.google.firebase:firebase-bom:26.6.0')
// Declare the dependencies for the Remote Config and Analytics libraries
// When using the BoM, you don't specify versions in Firebase library dependencies
implementation 'com.google.firebase:firebase-config'
implementation 'com.google.firebase:firebase-analytics'
}
Синхронизируйте свой проект с файлами Gradle.
Чтобы убедиться, что все зависимости доступны вашему приложению, синхронизируйте проект с файлами Gradle, выбрав File > Sync Project with Gradle Files .
4. Ознакомьтесь с основными компонентами удаленной настройки.
Сейчас мы рассмотрим шаги по использованию Remote Config в приложении. Эти шаги уже были выполнены в примере кода из краткого руководства. Пожалуйста, используйте этот раздел при изучении кода из краткого руководства, чтобы понять, что происходит.
1. Получите объект-синглтон удаленной конфигурации.
Получите экземпляр объекта Remote Config и установите минимальный интервал выборки, чтобы обеспечить частое обновление:
MainActivity.java
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
.setMinimumFetchIntervalInSeconds(3600)
.build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Объект-синглтон используется для хранения значений параметров по умолчанию в приложении, получения обновленных значений параметров из бэкэнда и управления моментом, когда полученные значения становятся доступны вашему приложению.
В процессе разработки рекомендуется устанавливать относительно низкий минимальный интервал выборки. Дополнительную информацию см. в разделе «Ограничение скорости» .
2. Установите значения параметров по умолчанию в приложении.
В объекте Remote Config можно задать значения параметров по умолчанию для всего приложения, чтобы оно работало должным образом до подключения к бэкэнду Remote Config, а также чтобы были доступны значения по умолчанию, если в бэкэнде они не заданы.
Вы можете определить набор имен параметров и значений параметров по умолчанию, используя объект Map или XML-файл ресурсов, хранящийся в папке res/xml вашего приложения. В примере быстрого запуска Remote Config для определения имен и значений параметров по умолчанию используется XML-файл . Вот как можно создать собственный XML-файл:
- Создайте папку
xmlвнутри папкиres.

- Щелкните правой кнопкой мыши по только что созданной папке
xmlи создайте файл.

- Установите значения по умолчанию. В следующем разделе вы попробуете изменить значения по умолчанию в XML-файле быстрого запуска Remote Config.
- Добавьте эти значения в объект Remote Config, используя метод setDefaultsAsync(int), как показано ниже:
MainActivity.java
mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
3. Получите значения параметров для использования в вашем приложении.
Теперь вы можете получать значения параметров из объекта Remote Config. Если вы задаете значения в бэкэнде, получаете их, а затем активируете, эти значения становятся доступны вашему приложению. В противном случае вы получаете значения параметров, настроенные внутри приложения, с помощью метода setDefaultsAsync(int) . Чтобы получить эти значения, вызовите метод, указанный ниже, который соответствует ожидаемому вашим приложением типу данных, указав в качестве аргумента ключ параметра:
4. Получение и активация значений.
- Для получения значений параметров из бэкэнда Remote Config вызовите метод fetch() . Все значения, которые вы задали в бэкэнде, будут получены и сохранены в объекте Remote Config.
- Чтобы сделать полученные значения параметров доступными для вашего приложения, вызовите метод activate() . В случаях, когда вы хотите получить и активировать значения за один вызов, вы можете использовать запрос fetchAndActivate() для получения значений из бэкэнда Remote Config и предоставления их приложению:
MainActivity.java
mFirebaseRemoteConfig.fetchAndActivate()
.addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
@Override
public void onComplete(@NonNull Task<Boolean> task) {
if (task.isSuccessful()) {
boolean updated = task.getResult();
Log.d(TAG, "Config params updated: " + updated);
Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Fetch failed",
Toast.LENGTH_SHORT).show();
}
displayWelcomeMessage();
}
});
Поскольку эти обновленные значения параметров влияют на поведение и внешний вид вашего приложения, вам следует активировать полученные значения в такое время, которое обеспечит бесперебойную работу для пользователя, например, при следующем открытии приложения. См. раздел «Стратегии загрузки удаленной конфигурации» для получения дополнительной информации и примеров.
Регулирование скорости
Если приложение выполняет слишком много запросов за короткий промежуток времени, количество запросов ограничивается, и SDK возвращает исключение FirebaseRemoteConfigFetchThrottledException . До версии SDK 17.0.0 лимит составлял 5 запросов за 60 минут (в более новых версиях лимиты более гибкие).
В процессе разработки приложения может потребоваться очень часто (много раз в час) получать и активировать конфигурации, чтобы быстро вносить изменения по мере разработки и тестирования приложения. Для обеспечения быстрой итерации в проекте с участием до 10 разработчиков можно временно установить объект FirebaseRemoteConfigSettings с низким минимальным интервалом получения данных ( setMinimumFetchIntervalInSeconds ) в вашем приложении.
По умолчанию минимальный интервал получения данных для удаленной конфигурации составляет 12 часов, что означает, что конфигурации не будут получаться из бэкэнда более одного раза в течение 12 часов, независимо от того, сколько запросов на получение данных будет фактически выполнено. В частности, минимальный интервал получения данных определяется в следующем порядке:
- Параметр в
fetch(long) - Параметр в
FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long) - Значение по умолчанию — 12 часов.
Чтобы установить минимальный интервал выборки на пользовательское значение, используйте FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) .
5. Измените поведение приложения с помощью удаленной конфигурации.
Измените параметры по умолчанию в приложении.
Откройте res/xml/remote_config_defaults.xml и измените значения по умолчанию на другие.
res/xml/remote_config_defaults.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- START xml_defaults -->
<defaultsMap>
<entry>
<key>loading_phrase</key>
<value>Fetching config...</value>
</entry>
<entry>
<key>welcome_message_caps</key>
<value>false</value>
</entry>
<entry>
<key>welcome_message</key>
<value>Welcome to my awesome app!</value>
</entry>
</defaultsMap>
<!-- END xml_defaults -->
Проверьте изменение значения по умолчанию в приложении.
- Запустите проект в эмуляторе или на тестовом устройстве, чтобы подтвердить его работоспособность.
- Нажмите «Открыть» для версии на Java или Kotlin.

- Ознакомьтесь с приветственным сообщением на главном экране.

Задайте значения параметров в административной панели Remote Config.
Теперь давайте протестируем отправку значений через Remote Config. Используя консоль Firebase или API бэкэнда Remote Config , вы можете создать новые значения по умолчанию на стороне сервера, которые переопределяют значения в приложении в соответствии с желаемой условной логикой или таргетингом пользователей. В этом разделе описаны шаги в консоли Firebase для создания этих значений.
- Откройте консоль Firebase , откройте свой проект.
- Чтобы просмотреть панель мониторинга удаленной конфигурации, выберите пункт «Удаленная настройка» в меню слева в разделе Engage.
- В поле «Добавить параметр» введите
Parameter key.В полеDefault valueдобавьте любой текст по вашему желанию. Затем нажмите «Добавить параметр». В этом практическом задании мы будем использовать ключи параметров из файлаres/xml/remote_config_defaults.xml. Подробности см. в таблице ниже:
Ключ параметра | Значение по умолчанию ( | Описание |
загрузка_фразы | Получение конфигурации... | Строка; отображается при получении значений удаленной конфигурации. |
welcome_message_caps | ЛОЖЬ | Логическое значение; если true, изменяет welcome_message на текст, написанный заглавными буквами. |
приветственное сообщение | Добро пожаловать в моё замечательное приложение! | Строка; Приветственное сообщение |
Пример скриншота:

- После добавления всех параметров нажмите кнопку «Опубликовать изменения».
- Запустите приложение на эмуляторе или устройстве еще раз и на этот раз нажмите кнопку "Получить удаленное приветствие".

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