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

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 для изменения и настройки приложений. Пожалуйста, ознакомьтесь с дополнительными ресурсами ниже: