| Выберите платформу: | iOS+ Android Веб Flutter Unity C++ |
Вы можете использовать Firebase Remote Config, чтобы задавать параметры в приложении и обновлять их значения в облаке. Это позволяет изменять внешний вид и поведение приложения без выпуска обновлений. В этом руководстве описаны первые шаги по работе с Firebase и приведены образцы кода, которые можно клонировать или скачать из репозитория GitHub firebase/quickstart-android.
Шаг 1. Добавьте в приложение Firebase и Remote Config SDK
Если вы ещё этого не сделали, добавьте Firebase в проект Android.
Для Remote Config необходимо использовать Google Analytics, чтобы реализовать условный таргетинг экземпляров приложения на свойства пользователей и аудитории. Убедитесь, что в проекте включен Google Analytics.
В файле Gradle модуля (на уровне приложения) (обычно
<project>/<app-module>/build.gradle.ktsили<project>/<app-module>/build.gradle) добавьте зависимости для библиотек Remote Config и Analytics для Android. Мы рекомендуем использовать Firebase Android BoM для управления версиями библиотеки.Кроме того, при настройке Analytics вам нужно добавить в приложение Firebase SDK для Google Analytics.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.19.0")) // Add 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 { // Add 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:23.1.0")
implementation("com.google.firebase:firebase-analytics:23.2.0") }
Шаг 2. Получите одиночный объект Remote Config
Получите экземпляр объекта Remote Config и задайте минимальный интервал получения, чтобы обеспечить возможность частых обновлений:
Kotlin
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Объект singleton используется для хранения значений параметров по умолчанию, получения обновленных значений параметров от серверной части и управления тем, когда полученные значения становятся доступны приложению.
Во время разработки рекомендуется установить относительно низкий минимальный интервал выборки. Подробнее об ограничении частоты запросов…
Шаг 3. Задайте значения параметров по умолчанию в приложении
Вы можете задать значения параметров по умолчанию для объектов Remote Config, чтобы приложение работало нужным образом до подключения к серверной части Remote Config и чтобы значения по умолчанию были доступны, если они не заданы в серверной части.
Определите набор названий параметров и их значений по умолчанию, используя объект Map или XML-файл ресурсов, хранящийся в папке
res/xmlприложения. В Remote Config примере приложения для быстрого запуска используются XML-файлы, в которых заданы названия и значения параметров по умолчанию.Если вы уже настроили значения параметра Remote Config, вы можете скачать сгенерированный XML-файл со всеми значениями по умолчанию и сохранить его в каталоге
res/xmlприложения.REST
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
Вы можете создать токен носителя, выполнив следующую команду с помощью Google Cloud CLI или Cloud Shell:
gcloud auth print-access-tokenСрок действия токена ограничен, поэтому при ошибке аутентификации может потребоваться создать его заново.
Консоль Firebase
В консоли Firebase выберите DevOps & Engagement (DevOps и взаимодействие) > Remote Config (Удаленная настройка) > Parameters (Параметры).
Откройте
Меню и выберите Скачать значения по умолчанию.Когда появится запрос, включите .xml для Android и нажмите Скачать файл.
Добавьте эти значения в объект Remote Config, используя
setDefaultsAsync(int), как показано ниже:Kotlin
remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Шаг 4. Получите значения параметров, которые будут использоваться в приложении
Теперь вы можете получать значения параметров из объекта Remote Config. Если вы задали значения на сервере, получили их и активировали, то они будут доступны в приложении. В противном случае вы получите значения параметров, настроенные в приложении с помощью setDefaultsAsync(int).
Чтобы получить эти значения, вызовите метод, указанный в следующем коде, который сопоставляется с типом данных, ожидаемым вашим приложением, указав ключ параметра в качестве аргумента:
Шаг 5. Задайте значения параметров в серверной части Remote Config
С помощью Firebase или Remote Config можно создавать новые серверные значения по умолчанию, которые будут переопределять значения в приложении в соответствии с заданной вами условной логикой или таргетингом на пользователей. В этом разделе описаны действия, которые нужно выполнить в консоли Firebase, чтобы создать эти значения.
В консоли Firebase выберите DevOps & Engagement (DevOps и взаимодействие) > Remote Config (Удаленная настройка) > Parameters (Параметры).
Задайте параметры с теми же названиями, что и в приложении. Для каждого параметра можно задать значение по умолчанию (оно переопределит значение по умолчанию в приложении) и условные значения. Подробнее Remote Config о параметрах и условиях…
Если вы используете условия для специальных сигналов, укажите атрибуты и их значения. Ниже приведены примеры того, как задать условие для собственного сигнала.
Kotlin
val customSignals = customSignals { put("city", "Tokyo") put("preferred_event_category", "sports") } remoteConfig.setCustomSignals(customSignals)
Java
CustomSignals customSignals = new CustomSignals.Builder() .put("city", "Tokyo") .put("preferred_event_category", "sports") .build(); mFirebaseRemoteConfig.setCustomSignals(customSignals);
Шаг 6. Получите и активируйте значения
- Чтобы получить значения параметров из серверной части Remote Config, вызовите метод
fetch(). Все значения, заданные на сервере, извлекаются и сохраняются в объекте Remote Config. Чтобы полученные значения параметров стали доступны в приложении, вызовите метод
activate().Если вам нужно получить и активировать значения за один вызов, вы можете использовать запрос
fetchAndActivate(), чтобы получить значения из серверной части Remote Config и сделать их доступными для приложения:Kotlin
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() }
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.
Шаг 7. Слушайте обновления в реальном времени
После того как вы получите значения параметров, вы можете использовать Remote Config в реальном времени, чтобы отслеживать обновления от серверной части Remote Config. Сигналы в реальном времени Remote Config передаются на подключенные устройства, когда становятся доступны обновления, и автоматически извлекают изменения после публикации новой версии Remote Config.
Обновления в реальном времени поддерживаются в Firebase SDK для Android версии 21.3.0 или более поздней (Firebase BoM версии 31.2.4 или более поздней).
В приложении используйте
addOnConfigUpdateListener(), чтобы начать отслеживать обновления и автоматически получать новые значения параметров. Реализуйте обратный вызовonUpdate(), чтобы активировать обновленную конфигурацию.Kotlin
remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener { override fun onUpdate(configUpdate : ConfigUpdate) { Log.d(TAG, "Updated keys: " + configUpdate.updatedKeys); if (configUpdate.updatedKeys.contains("welcome_message")) { remoteConfig.activate().addOnCompleteListener { displayWelcomeMessage() } } } override fun onError(error : FirebaseRemoteConfigException) { Log.w(TAG, "Config update error with code: " + error.code, error) } })
Java
mFirebaseRemoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() { @Override public void onUpdate(ConfigUpdate configUpdate) { Log.d(TAG, "Updated keys: " + configUpdate.getUpdatedKeys()); mFirebaseRemoteConfig.activate().addOnCompleteListener(new OnCompleteListener<Boolean>() { @Override public void onComplete(@NonNull Task<Boolean> task) { displayWelcomeMessage(); } }); } @Override public void onError(FirebaseRemoteConfigException error) { Log.w(TAG, "Config update error with code: " + error.getCode(), error); } });
Когда вы в следующий раз опубликуете новую версию Remote Config, устройства, на которых запущено ваше приложение и которые отслеживают изменения, вызовут
ConfigUpdateListener.
Ограничение пропускной способности
Если приложение запрашивает данные слишком часто за короткий период времени, SDK ограничивает количество запросов и возвращает код FirebaseRemoteConfigFetchThrottledException.
До версии 17.0.0 SDK было разрешено не более пяти запросов на получение данных в течение 60 минут (в более новых версиях лимиты более мягкие).
Во время разработки приложения вам может потребоваться часто (несколько раз в час) получать и активировать конфигурации, чтобы быстро вносить изменения и тестировать приложение. Обновления в реальном времени Remote Config автоматически пропускают кеш, когда конфигурация обновляется на сервере. Чтобы обеспечить возможность быстрой итерации в проекте, над которым работают до 10 разработчиков, вы можете временно задать для объекта FirebaseRemoteConfigSettings низкий минимальный интервал получения (setMinimumFetchIntervalInSeconds) в приложении.
Минимальный интервал получения данных для Remote Config по умолчанию составляет 12 часов. Это означает, что конфигурации не будут извлекаться из серверной части чаще одного раза в 12 часов, независимо от того, сколько вызовов получения данных было сделано. Минимальный интервал получения определяется в следующем порядке:
- Параметр в
fetch(long) - Параметр в
FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long) - Значение по умолчанию – 12 часов.
Чтобы задать минимальный интервал получения данных, используйте FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long).