Интеграция удаленной настройки в Android Codelab

Интеграция удаленной настройки в Android Codelab

О практической работе

subjectПоследнее обновление: мар. 30, 2021
account_circleАвторы: Brad Tsunekawa

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 и в вашем приложении:

61f12f33d2ac3133.png

Что вы узнаете

  • Как реализовать удаленную конфигурацию 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_folder.png папка конфигурации .

(Необязательно) Импортируйте пример кода.

Запустите Android Studio, выберите «Импортировать проект» на экране приветствия. Затем откройте скачанную папку и выберите android_studio_folder.png папка конфигурации . Затем нажмите «Открыть».

5f90353b0b519642.png

Создать новый проект Android

  1. В Android Studio начните новый проект
  2. Выберите базовую деятельность
  3. На экране «Настройте свой проект»:
  4. Назовите свой проект. Имя пакета и место сохранения будут сгенерированы автоматически.
  5. Язык: Ява
  6. Минимум SDK 16

3. Добавьте Firebase и Firebase Analytics в свой проект Android.

Создать проект Firebase

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

  1. В консоли Firebase нажмите «Добавить проект» , затем выберите или введите имя проекта . 910158221fe46223.png

Если у вас есть существующий проект Google Cloud Platform (GCP), вы можете выбрать проект из раскрывающегося меню, чтобы добавить ресурсы Firebase в этот проект.

  1. (Необязательно) Если вы создаете новый проект, вы можете изменить его идентификатор .

Firebase автоматически присваивает уникальный идентификатор вашему проекту Firebase. Посетите раздел «Понимание проектов Firebase», чтобы узнать, как Firebase использует идентификатор проекта.

  1. Нажмите Продолжить .
  2. Настройте Google Analytics для своего проекта, что позволит вам оптимально использовать любой из следующих продуктов Firebase:
  • Firebase Крашлитикс
  • Прогнозы Firebase
  • Облачный обмен сообщениями Firebase
  • Обмен сообщениями Firebase внутри приложения
  • Удаленная конфигурация Firebase
  • A/B-тестирование Firebase

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

1282a798556779ab.png

48ade68c8de27d2.png

  1. Нажмите «Создать проект» (или «Добавить Firebase» , если вы используете существующий проект GCP).

Firebase автоматически выделяет ресурсы для вашего проекта Firebase. Когда процесс завершится, вы перейдете на страницу обзора вашего проекта Firebase в консоли Firebase.

Зарегистрируйте свое приложение в Firebase

После того как у вас есть проект Firebase, вы можете добавить в него свое Android-приложение.

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

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

Добавьте файл конфигурации Firebase

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

bc8ec7d3c9a28d75.png

a99b7415462dfc8b.png

В файле 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-файл:

  1. Создайте папку xml в папке res .

4b8a2a637a626e94.png

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

358b4ba740120ece.png

  1. Установите значения по умолчанию. В следующем разделе вы попытаетесь изменить значения по умолчанию в XML-файле быстрого запуска Remote Config.
  2. Добавьте эти значения в объект Remote Config, используя setDefaultsAsync(int), как показано:

MainActivity.java

mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

3. Получите значения параметров для использования в вашем приложении.

Теперь вы можете получать значения параметров из объекта Remote Config. Если вы установите значения в серверной части, получите их, а затем активируете, эти значения будут доступны вашему приложению. В противном случае вы получите значения параметров приложения, настроенные с помощью setDefaultsAsync(int) . Чтобы получить эти значения, вызовите метод, указанный ниже, который соответствует типу данных, ожидаемому вашим приложением, передав ключ параметра в качестве аргумента:

4. Получите и активируйте значения

  1. Чтобы получить значения параметров из серверной части Remote Config, вызовите метод fetch() . Любые значения, которые вы устанавливаете в серверной части, извлекаются и сохраняются в объекте Remote Config.
  2. Чтобы сделать полученные значения параметров доступными для вашего приложения, вызовите метод 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-часовом окне, независимо от того, сколько фактически выполненных вызовов выборки. В частности, минимальный интервал выборки определяется в следующем порядке:

  1. Параметр в fetch(long)
  2. Параметр в FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. Значение по умолчанию: 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 -->

Проверьте изменение значения по умолчанию в приложении.

  1. Запустите проект в эмуляторе или на тестовом устройстве, чтобы проверить поведение.
  2. Нажмите «Открыть» в версии Java или Kotlin.

c1582b989c25ced.png

  1. Просмотрите приветственное сообщение на главном экране.

4c838bf5a629d5b8.png

Установите значения параметров в серверной части Remote Config.

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

  1. Откройте консоль Firebase , откройте свой проект.
  2. Выберите Remote Config в меню слева в разделе «Взаимодействие», чтобы просмотреть панель мониторинга Remote Config.
  3. В разделе «Добавить параметр» введите Parameter key. В разделе Default value добавьте любой текст, который вам нужен. Затем нажмите «Добавить параметр». Для этой лаборатории кода мы будем использовать ключи параметров в файле res/xml/remote_config_defaults.xml . Подробности смотрите в таблице ниже:

Ключ параметра

Значение по умолчанию ( remote_config_defaults.xml )

Описание

loading_phrase

Загрузка конфигурации...

Нить; Отображается при получении значений Remote Config.

Welcome_message_caps

ЛОЖЬ

логическое значение; Если это правда, меняет Welcome_message на все заглавные буквы.

добро пожаловать_сообщение

Добро пожаловать в мое потрясающее приложение!

Нить; Приветственное сообщение

Пример скриншота:

28fa48f18da43002.png

  1. Закончив добавление параметров, нажмите «Опубликовать изменения».
  2. Снова запустите приложение на эмуляторе или устройстве и на этот раз нажмите кнопку «Получить удаленное приветствие».

cfe900477549adb7.png

  1. Приветственное сообщение должно быть обновлено на основе вашего параметра и значений Remote Config!

6. Поздравления

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