Вы можете использовать Firebase Remote Config, чтобы определить параметры в своем приложении и обновить их значения в облаке, что позволит вам изменить внешний вид и поведение вашего приложения без распространения обновления приложения. В этом руководстве описаны шаги для начала работы и предоставлен пример кода, который можно клонировать или загрузить из репозитория GitHub firebase/quickstart-android .
Добавьте Firebase и Remote Config SDK в свое приложение.
Если вы еще этого не сделали, добавьте Firebase в свой проект Android .
Для Remote Config требуется Google Analytics для условного таргетинга экземпляров приложений на пользовательские свойства и аудитории. Убедитесь, что вы включили Google Analytics в своем проекте.
Используя Firebase Android BoM , объявите зависимость для библиотеки Remote Config Android в файле Gradle вашего модуля (на уровне приложения) (обычно
app/build.gradle
).Кроме того, в рамках настройки Analytics вам необходимо добавить Firebase SDK для Google Analytics в свое приложение.
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.1.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' }
Используя Firebase Android BoM , ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.
(Альтернатива) Объявите зависимости библиотеки Firebase без использования BoM
Если вы решите не использовать Firebase BoM, вы должны указать каждую версию библиотеки Firebase в строке зависимостей.
Обратите внимание: если вы используете несколько библиотек Firebase в своем приложении, мы настоятельно рекомендуем использовать BoM для управления версиями библиотек, что гарантирует совместимость всех версий.
dependencies { // Declare the dependencies for the Remote Config and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-config:21.1.0' implementation 'com.google.firebase:firebase-analytics:21.0.0' }
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.1.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-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' }
Используя Firebase Android BoM , ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.
(Альтернатива) Объявите зависимости библиотеки Firebase без использования BoM
Если вы решите не использовать Firebase BoM, вы должны указать каждую версию библиотеки Firebase в строке зависимостей.
Обратите внимание: если вы используете несколько библиотек Firebase в своем приложении, мы настоятельно рекомендуем использовать BoM для управления версиями библиотек, что гарантирует совместимость всех версий.
dependencies { // Declare the dependencies for the Remote Config and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-config-ktx:21.1.0' implementation 'com.google.firebase:firebase-analytics-ktx:21.0.0' }
Получите одноэлементный объект Remote Config
Получите экземпляр объекта Remote Config и установите минимальный интервал выборки, чтобы обеспечить частые обновления:
Java
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Kotlin+KTX
remoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Объект singleton используется для хранения значений параметров по умолчанию в приложении, извлечения обновленных значений параметров из серверной части и управления тем, когда извлеченные значения становятся доступными для вашего приложения.
Во время разработки рекомендуется установить относительно низкий минимальный интервал выборки. Дополнительную информацию см. в разделе Дросселирование .
Установите значения параметров по умолчанию в приложении
Вы можете установить значения параметров по умолчанию в приложении в объекте Remote Config, чтобы ваше приложение вело себя должным образом, прежде чем оно подключится к серверной части Remote Config, и чтобы значения по умолчанию были доступны, если ни одно из них не установлено в серверной части.
Определите набор имен параметров и значений параметров по умолчанию, используя объект карты или файл ресурсов XML, хранящийся в папке
res/xml
вашего приложения. Пример приложения быстрого запуска Remote Config использует XML-файл для определения имен и значений параметров по умолчанию.Если вы уже настроили значения внутренних параметров Remote Config, вы можете загрузить сгенерированный XML-файл, который включает все значения по умолчанию, и сохранить его в каталоге
res/xml
вашего приложения:ОСТАЛЬНОЕ
curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=XML -o remote_config_defaults.xml
Консоль Firebase
На вкладке « Параметры » откройте меню « » и выберите « Загрузить значения по умолчанию ».
При появлении запроса включите .xml для Android , затем нажмите « Загрузить файл ».
Добавьте эти значения в объект Remote Config с помощью
setDefaultsAsync(int)
, как показано ниже:Java
mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Kotlin+KTX
remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Получите значения параметров для использования в вашем приложении
Теперь вы можете получить значения параметров из объекта Remote Config. Если вы устанавливаете значения в бэкэнде, извлекаете их, а затем активируете, эти значения становятся доступными для вашего приложения. В противном случае вы получите значения параметров в приложении, настроенные с помощью setDefaultsAsync(int)
. Чтобы получить эти значения, вызовите метод, указанный ниже, который сопоставляется с типом данных, ожидаемым вашим приложением, указав ключ параметра в качестве аргумента:
Задайте значения параметров в бэкэнде Remote Config.
Используя консоль Firebase или внутренние API-интерфейсы Remote Config , вы можете создавать новые значения по умолчанию на стороне сервера, которые переопределяют значения в приложении в соответствии с желаемой условной логикой или пользовательским таргетингом. В этом разделе описываются шаги консоли Firebase для создания этих значений.
- В консоли Firebase откройте свой проект.
- Выберите Remote Config в меню, чтобы просмотреть панель управления Remote Config.
- Определите параметры с теми же именами, что и параметры, которые вы определили в своем приложении. Для каждого параметра вы можете установить значение по умолчанию (которое в конечном итоге переопределит соответствующее значение по умолчанию в приложении), а также вы можете установить условные значения. Дополнительные сведения см. в разделе Параметры и условия удаленной конфигурации .
Получить и активировать значения
- Чтобы получить значения параметров из бэкенда Remote Config, вызовите метод
fetch()
. Любые значения, которые вы устанавливаете в бэкэнде, извлекаются и сохраняются в объекте Remote Config. Чтобы сделать извлеченные значения параметров доступными для вашего приложения, вызовите
activate()
.В случаях, когда вы хотите получить и активировать значения за один вызов, вы можете использовать
fetchAndActivate()
для извлечения значений из бэкэнда Remote Config и сделать их доступными для приложения: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(); } });
Kotlin+KTX
remoteConfig.fetchAndActivate() .addOnCompleteListener(this) { task -> if (task.isSuccessful) { val updated = task.result Log.d(TAG, "Config params updated: $updated") Toast.makeText(this, "Fetch and activate succeeded", Toast.LENGTH_SHORT).show() } else { Toast.makeText(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)
.
Следующие шаги
Если вы еще этого не сделали, изучите варианты использования Remote Config и ознакомьтесь с некоторыми ключевыми концепциями и документацией по расширенным стратегиям, в том числе: