О практической работе
1. Введение
Последнее обновление: 9 марта 2021 г.
Что такое удаленная конфигурация Firebase?
Firebase Remote Config — это облачный сервис, который позволяет вам изменять поведение и внешний вид вашего приложения, не требуя от пользователей бесплатной загрузки обновления приложения. При использовании Remote Config вы создаете в приложении значения по умолчанию, которые управляют поведением и внешним видом вашего приложения. Затем вы можете позже использовать консоль Firebase или серверные API Remote Config, чтобы переопределить значения по умолчанию в приложении для всех пользователей приложения или для сегментов вашей пользовательской базы. Ваше приложение контролирует, когда применяются обновления, и может часто проверять наличие обновлений и применять их с незначительным влиянием на производительность.
Как это работает?
Remote Config включает в себя клиентскую библиотеку, которая выполняет важные задачи, такие как получение значений параметров и их кэширование, при этом предоставляя вам контроль над тем, когда активируются новые значения, чтобы они влияли на взаимодействие с пользователем вашего приложения. Это позволяет вам защитить работу вашего приложения, контролируя время внесения любых изменений.
Методы get
клиентской библиотеки Remote Config предоставляют единую точку доступа к значениям параметров. Ваше приложение получает значения на стороне сервера, используя ту же логику, которую оно использует для получения значений по умолчанию в приложении, поэтому вы можете добавить возможности Remote Config в свое приложение без написания большого количества кода.
Чтобы переопределить значения по умолчанию в приложении, вы используете консоль Firebase или серверные API Remote Config для создания параметров с теми же именами, что и параметры, используемые в вашем приложении. Для каждого параметра вы можете установить значение по умолчанию на стороне сервера, чтобы переопределить значение по умолчанию в приложении, а также создать условные значения, чтобы переопределить значение по умолчанию в приложении для экземпляров приложения, соответствующих определенным условиям. На этом рисунке показано, как значения параметров имеют приоритет в серверной части Remote Config и в вашем приложении:
Что вы узнаете
- Как реализовать удаленную конфигурацию Firebase
- Как использовать 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, выберите «Импортировать проект» на экране приветствия. Затем откройте скачанную папку и выберите папка конфигурации . Затем нажмите «Открыть».
Создать новый проект Android
- В Android Studio начните новый проект
- Выберите базовую деятельность
- На экране «Настройте свой проект»:
- Назовите свой проект. Имя пакета и место сохранения будут сгенерированы автоматически.
- Язык: Ява
- Минимум 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 Крашлитикс
- Прогнозы Firebase
- Облачный обмен сообщениями Firebase
- Обмен сообщениями Firebase внутри приложения
- Удаленная конфигурация Firebase
- 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. Убедитесь, что у вас также есть репозиторий Google Maven.
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
) примените плагин Gradle Google Services:
build.gradle уровня приложения ( <project>/<app-module>/build.gradle
):
применить плагин: «com.android.application»
// Добавьте следующую строку:
применить плагин: 'com.google.gms.google-services' // плагин Google Services
андроид {
// ...
}
Добавьте Firebase SDK в свое приложение для Android.
Для удаленной настройки требуется Google Analytics для условного таргетинга экземпляров приложения на свойства и аудитории пользователей. Убедитесь, что вы включили Google Analytics в своем проекте.
(Это уже сделано в примере кода быстрого запуска)
Используя Firebase Android BoM , объявите зависимость для Android-библиотеки Remote Config в файле Gradle вашего модуля (на уровне приложения) (обычно app/build.gradle
). Используя Firebase Android BoM , ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.
Кроме того, в рамках настройки Analytics вам необходимо добавить в свое приложение Firebase SDK для Google Analytics. В разделе «Зависимости» добавьте следующий код:
приложение/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, выбрав «Файл» > «Синхронизировать проект с файлами Gradle» .
4. Обзор основных компонентов Remote Config.
Теперь мы рассмотрим шаги по использованию 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.
- Чтобы сделать полученные значения параметров доступными для вашего приложения, вызовите метод active() . В случаях, когда вы хотите получить и активировать значения за один вызов, вы можете использовать запрос 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();
}
});
Поскольку эти обновленные значения параметров влияют на поведение и внешний вид вашего приложения, вам следует активировать полученные значения в тот момент, когда это обеспечит удобство работы вашего пользователя, например, когда пользователь в следующий раз откроет ваше приложение. Дополнительные сведения и примеры см. в разделе Стратегии загрузки Remote Config .
Регулирование
Если приложение выполняет выборку слишком много раз за короткий период времени, вызовы выборки регулируются, и SDK возвращает FirebaseRemoteConfigFetchThrottledException
. До версии SDK 17.0.0 ограничение составляло 5 запросов на выборку в течение 60 минут (более новые версии имеют более допустимые ограничения).
Во время разработки приложения вам может потребоваться очень часто (много раз в час) получать и активировать конфигурации, чтобы можно было быстро выполнять итерации по мере разработки и тестирования приложения. Чтобы обеспечить быструю итерацию проекта с участием до 10 разработчиков, вы можете временно установить в своем приложении объект FirebaseRemoteConfigSettings
с низким минимальным интервалом выборки ( setMinimumFetchIntervalInSeconds
).
Минимальный интервал выборки по умолчанию для Remote Config составляет 12 часов. Это означает, что конфигурации не будут извлекаться из серверной части более одного раза в 12-часовом окне, независимо от того, сколько фактически выполненных вызовов выборки. В частности, минимальный интервал выборки определяется в следующем порядке:
- Параметр в
fetch(long)
- Параметр в
FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
- Значение по умолчанию: 12 часов.
Чтобы установить для минимального интервала выборки пользовательское значение, используйте FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) .
5. Измените поведение приложения с помощью Remote Config.
Измените параметры по умолчанию в приложении
Откройте 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 , откройте свой проект.
- Выберите Remote Config в меню слева в разделе «Взаимодействие», чтобы просмотреть панель мониторинга Remote Config.
- В разделе «Добавить параметр» введите
Parameter key.
В разделеDefault value
добавьте любой текст, который вам нужен. Затем нажмите «Добавить параметр». Для этой лаборатории кода мы будем использовать ключи параметров в файлеres/xml/remote_config_defaults.xml
. Подробности смотрите в таблице ниже:
Ключ параметра | Значение по умолчанию ( | Описание |
loading_phrase | Загрузка конфигурации... | Нить; Отображается при получении значений Remote Config. |
Welcome_message_caps | ЛОЖЬ | логическое значение; Если это правда, меняет Welcome_message на все заглавные буквы. |
добро пожаловать_сообщение | Добро пожаловать в мое потрясающее приложение! | Нить; Приветственное сообщение |
Пример скриншота:
- Закончив добавление параметров, нажмите «Опубликовать изменения».
- Снова запустите приложение на эмуляторе или устройстве и на этот раз нажмите кнопку «Получить удаленное приветствие».
- Приветственное сообщение должно быть обновлено на основе вашего параметра и значений Remote Config!
6. Поздравления
Поздравляем, вы успешно использовали Remote Config для изменения приветственного сообщения! Существует множество других способов использования Remote Config для изменения и настройки приложений. Пожалуйста, ознакомьтесь с дополнительными ресурсами ниже: