Начало работы с Firebase Remote Config


Вы можете использовать Firebase Remote Config для определения параметров в вашем приложении и обновления их значений в облаке, что позволяет вам изменять внешний вид и поведение вашего приложения без распространения обновления приложения. В этом руководстве описаны шаги, необходимые для начала работы, и представлен пример кода, который можно клонировать или загрузить из репозитория Firebase/quickstart-android на GitHub.

Шаг 1. Добавьте Firebase и SDK Remote Config в свое приложение.

  1. Если вы еще этого не сделали, добавьте Firebase в свой проект Android .

  2. Для Remote Config Google Analytics необходим для условного таргетинга экземпляров приложения на свойства и аудитории пользователей. Убедитесь, что вы включили Google Analytics в своем проекте.

  3. В файле Gradle вашего модуля (на уровне приложения) (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle ) добавьте зависимость для Remote Config библиотека для Android. Мы рекомендуем использовать Firebase Android BoM для управления версиями библиотеки.

    Кроме того, в рамках настройки Analytics вам необходимо добавить в свое приложение Firebase SDK для Google Analytics .

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.4.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:22.0.0")
        implementation("com.google.firebase:firebase-analytics:22.1.2")
    }
    Ищете библиотечный модуль, специфичный для Kotlin? Начиная с октября 2023 года ( Firebase BoM 32.5.0) от основного модуля библиотеки могут зависеть как разработчики Kotlin, так и Java (подробнее см. FAQ по этой инициативе ).

Шаг 2. Получите одноэлементный объект Remote Config

Получите экземпляр объекта Remote Config и установите минимальный интервал выборки, чтобы обеспечить частые обновления:

Kotlin+KTX

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);

Объект-одиночка используется для хранения значений параметров по умолчанию в приложении, получения обновленных значений параметров из серверной части и управления тем, когда полученные значения становятся доступными для вашего приложения.

Во время разработки рекомендуется установить относительно небольшой минимальный интервал выборки. Дополнительную информацию см. в разделе Регулирование .

Шаг 3. Установите значения параметров по умолчанию в приложении.

Вы можете установить значения параметров по умолчанию в приложении в объекте Remote Config , чтобы ваше приложение вело себя должным образом до подключения к серверной части Remote Config , а также чтобы значения по умолчанию были доступны, если ни один из них не установлен в серверной части.

  1. Определите набор имен параметров и значений параметров по умолчанию, используя объект Map или файл ресурсов 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

    1. На вкладке «Параметры » откройте меню и выберите «Загрузить значения по умолчанию» .

    2. При появлении запроса включите .xml для Android , затем нажмите « Загрузить файл» .

  2. Добавьте эти значения в объект Remote Config используя setDefaultsAsync(int) , как показано:

    Kotlin+KTX

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

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

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

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

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

  1. В консоли Firebase откройте свой проект.
  2. Выберите Remote Config в меню, чтобы просмотреть панель мониторинга Remote Config .
  3. Определите параметры с теми же именами, что и параметры, которые вы определили в своем приложении. Для каждого параметра вы можете установить значение по умолчанию (которое в конечном итоге переопределит соответствующее значение по умолчанию в приложении), а также вы можете установить условные значения. Дополнительные сведения см. в разделе Параметры и условия Remote Config .

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

  1. Чтобы получить значения параметров из серверной части Remote Config , вызовите метод fetch() . Любые значения, которые вы устанавливаете в серверной части, извлекаются и сохраняются в объекте Remote Config .
  2. Чтобы сделать полученные значения параметров доступными для вашего приложения, вызовите метод activate() .

    В случаях, когда вы хотите получить и активировать значения за один вызов, вы можете использовать запрос fetchAndActivate() , чтобы получить значения из серверной части Remote Config и сделать их доступными для приложения:

    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()
        }

    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 v31.2.4+).

  1. В своем приложении используйте addOnConfigUpdateListener() чтобы начать прослушивать обновления и автоматически получать любые новые значения параметров. Реализуйте обратный вызов onUpdate() , чтобы активировать обновленную конфигурацию.

    Kotlin+KTX

    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);
        }
    });
  2. В следующий раз, когда вы опубликуете новую версию Remote Config , устройства, на которых работает ваше приложение и прослушивают изменения, вызовут ConfigUpdateListener .

Регулирование

Если приложение выполняет выборку слишком много раз за короткий период времени, вызовы выборки регулируются, и SDK возвращает FirebaseRemoteConfigFetchThrottledException . До версии SDK 17.0.0 ограничение составляло 5 запросов на выборку в течение 60 минут (более новые версии имеют более допустимые ограничения).

Во время разработки приложения вам может потребоваться очень часто (много раз в час) получать и активировать конфигурации, чтобы можно было быстро выполнять итерации по мере разработки и тестирования приложения. Обновления Remote Config в реальном времени автоматически обходят кэш при обновлении конфигурации на сервере. Чтобы обеспечить быструю итерацию проекта с участием до 10 разработчиков, вы можете временно установить в своем приложении объект FirebaseRemoteConfigSettings с низким минимальным интервалом выборки ( setMinimumFetchIntervalInSeconds ).

Минимальный интервал выборки по умолчанию для Remote Config составляет 12 часов. Это означает, что конфигурации не будут извлекаться из серверной части более одного раза в течение 12-часового окна, независимо от того, сколько фактически выполнено вызовов выборки. В частности, минимальный интервал выборки определяется в следующем порядке:

  1. Параметр в fetch(long)
  2. Параметр в FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. Значение по умолчанию 12 часов.

Чтобы установить для минимального интервала выборки пользовательское значение, используйте FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) .

Следующие шаги

Если вы еще этого не сделали, изучите варианты использования Remote Config и посмотрите на некоторые из ключевых концепций и документации «Расширенные стратегии», в том числе:

,


Вы можете использовать Firebase Remote Config для определения параметров в вашем приложении и обновить их значения в облаке, что позволяет вам изменять внешний вид и поведение вашего приложения без распространения обновления приложения. Это руководство проходит через шаги, чтобы начать работу и предоставляет некоторый пример кода, который доступен для клонирования или загрузки с репозитория Github Firebase/QuickStart-Android .

Шаг 1: Добавьте Firebase и удаленную конфигурацию SDK в ваше приложение

  1. Если вы еще этого не сделали, добавьте Firebase в свой проект Android .

  2. Для Remote Config Google Analytics требуется для условного нацеливания экземпляров приложений на свойства пользователя и аудиторию. Убедитесь, что вы включите Google Analytics в свой проект.

  3. В вашем модуле (App-Level) файл Gradle (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle ) добавьте зависимость для Remote Config Библиотека для Android. Мы рекомендуем использовать Firebase Android BoM для управления версией библиотеки.

    Кроме того, в рамках настройки Analytics вам необходимо добавить SDK Firebase для Google Analytics в ваше приложение.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.4.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 , ваше приложение всегда будет использовать совместимые версии библиотек Android Firebase.

    (Альтернатива) Добавить зависимости библиотеки 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:22.0.0")
        implementation("com.google.firebase:firebase-analytics:22.1.2")
    }
    Ищете модуль библиотеки, специфичный для котлина? Начиная с октября 2023 года ( Firebase BoM 32.5.0) , разработчики Kotlin и Java могут зависеть от основного библиотечного модуля (подробности см. FAQ об этой инициативе ).

Шаг 2: Получите Remote Config

Получите Remote Config и установите минимальный интервал выборки, чтобы обеспечить частые обновления:

Kotlin+KTX

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 , и поэтому значения по умолчанию доступны, если их не установлены в бэкэнд.

  1. Определите набор имен параметров и значения параметров по умолчанию, используя объект MAP или файл ресурса XML, хранящийся в папке res/xml вашего приложения. В примере Remote Config QuickStart используется 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

    1. На вкладке «Параметры» откройте меню и выберите «Значения по умолчанию» .

    2. При запросе, включите .xml для Android , затем нажмите « Загрузить файл» .

  2. Добавьте эти значения в объект Remote Config используя setDefaultsAsync(int) , как показано:

    Kotlin+KTX

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

Шаг 4: Получите значения параметров для использования в вашем приложении

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

Шаг 5: Установите значения параметров в бэкэнде Remote Config

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

  1. В консоли Firebase откройте свой проект.
  2. Выберите Remote Config в меню, чтобы просмотреть Remote Config .
  3. Определите параметры с теми же именами, что и параметры, которые вы определили в вашем приложении. Для каждого параметра вы можете установить значение по умолчанию (которое в конечном итоге будет переопределить соответствующее значение по умолчанию в приложении), и вы также можете установить условные значения. Чтобы узнать больше, см. Remote Config .

Шаг 6: Принесите и активируйте значения

  1. Чтобы получить значения параметров из Remote Config , вызовите метод fetch() . Любые значения, которые вы устанавливаете в бэкэнде, извлекаются и хранятся в объекте Remote Config .
  2. Чтобы сделать полученные значения параметров, доступных для вашего приложения, вызовите метод activate() .

    Для тех случаев, когда вы хотите получить и активировать значения в одном вызове, вы можете использовать запрос fetchAndActivate() для извлечения значений из Remote Config и сделать их доступными для приложения:

    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()
        }

    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();
                }
            });

Поскольку эти обновленные значения параметров влияют на поведение и внешний вид вашего приложения, вы должны активировать извлекаемые значения за раз, которые обеспечивают плавный опыт для вашего пользователя, например, в следующий раз, когда пользователь открывает ваше приложение. См. Удаленную стратегии загрузки конфигурации для получения дополнительной информации и примеров.

Шаг 7: Слушайте обновления в режиме реального времени

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

Обновления в реальном времени поддерживаются Firebase SDK для Android V21.3.0+ ( Firebase BoM V31.2.4+).

  1. В вашем приложении используйте addOnConfigUpdateListener() чтобы начать прослушивание обновлений и автоматически приносить любые новые значения параметров. Реализуйте обратный вызов onUpdate() для активации обновленной конфигурации.

    Kotlin+KTX

    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);
        }
    });
  2. В следующий раз, когда вы публикуете новую версию вашей Remote Config , устройств, которые запускают ваше приложение и прислушиваются к изменениям, вызовут ConfigUpdateListener .

Дросселя

Если приложение приносит слишком много раз за короткий период, вызовы избирателей углублены, а SDK возвращает FirebaseRemoteConfigFetchThrottledException . Перед версией SDK 17.0.0 лимит был 5 запросов избрать в 60 -минутном окне (новые версии имеют более разрешительные ограничения).

Во время разработки приложений вы можете захотеть извлечь и активировать конфигурации очень часто (много раз в час), чтобы вы могли быстро итерации по мере разработки и тестирования своего приложения. Обновления Remote Config в реальном времени автоматически обходят кэш, когда конфигурация обновляется на сервере. Чтобы приспособить быструю итерацию в проекте с 10 разработчиками, вы можете временно установить объект FirebaseRemoteConfigSettings с низким минимальным интервалом выборки ( setMinimumFetchIntervalInSeconds ) в вашем приложении.

Минимальный интервал по умолчанию для Remote Config составляет 12 часов, что означает, что конфигурации не будут извлечены из бэкэнда более одного раза в 12 -часовом окне, независимо от того, сколько вызовов на самом деле сделано. В частности, минимальный интервал выборки определяется в следующем порядке:

  1. Параметр в fetch(long)
  2. Параметр в FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. Значение по умолчанию 12 часов

Чтобы установить минимальный интервал выборки на пользовательское значение, используйте FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) .

Следующие шаги

If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including:

,


You can use Firebase Remote Config to define parameters in your app and update their values in the cloud, allowing you to modify the appearance and behavior of your app without distributing an app update. This guide walks you through the steps to get started and provides some sample code, all of which is available to clone or download from the firebase/quickstart-android GitHub repository.

Step 1: Add Firebase and the Remote Config SDK to your app

  1. Если вы еще этого не сделали, добавьте Firebase в свой проект Android .

  2. For Remote Config , Google Analytics is required for the conditional targeting of app instances to user properties and audiences. Make sure that you enable Google Analytics in your project.

  3. In your module (app-level) Gradle file (usually <project>/<app-module>/build.gradle.kts or <project>/<app-module>/build.gradle ), add the dependency for the Remote Config library for Android. We recommend using the Firebase Android BoM to control library versioning.

    Also, as part of setting up Analytics , you need to add the Firebase SDK for Google Analytics to your app.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.4.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")
    }

    By using the Firebase Android BoM , your app will always use compatible versions of Firebase Android libraries.

    (Alternative) Add Firebase library dependencies without using the BoM

    If you choose not to use the Firebase BoM , you must specify each Firebase library version in its dependency line.

    Note that if you use multiple Firebase libraries in your app, we strongly recommend using the BoM to manage library versions, which ensures that all versions are compatible.

    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:22.0.0")
        implementation("com.google.firebase:firebase-analytics:22.1.2")
    }
    Looking for a Kotlin-specific library module? Starting in October 2023 ( Firebase BoM 32.5.0) , both Kotlin and Java developers can depend on the main library module (for details, see the FAQ about this initiative ).

Step 2: Get the Remote Config singleton object

Get a Remote Config object instance and set the minimum fetch interval to allow for frequent refreshes:

Kotlin+KTX

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);

The singleton object is used to store in-app default parameter values, fetch updated parameter values from the backend, and control when fetched values are made available to your app.

During development, it's recommended to set a relatively low minimum fetch interval. See Throttling for more information.

Step 3: Set in-app default parameter values

You can set in-app default parameter values in the Remote Config object, so that your app behaves as intended before it connects to the Remote Config backend, and so that default values are available if none are set in the backend.

  1. Define a set of parameter names and default parameter values using a Map object or an XML resource file stored in your app's res/xml folder. The Remote Config quickstart sample app uses an XML file to define default parameter names and values.

    If you have already configured Remote Config backend parameter values, you can download a generated XML file that includes all default values and save it to your app's res/xml directory:

    ОТДЫХ

    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 console

    1. In the Parameters tab, open the Menu , and select Download default values .

    2. When prompted, enable .xml for Android , then click Download file .

  2. Add these values to the Remote Config object using setDefaultsAsync(int) , as shown:

    Kotlin+KTX

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

Step 4: Get parameter values to use in your app

Now you can get parameter values from the Remote Config object. If you set values in the backend, fetch them, and then activate them, those values are available to your app. Otherwise, you get the in-app parameter values configured using setDefaultsAsync(int) . To get these values, call the method listed below that maps to the data type expected by your app, providing the parameter key as an argument:

Step 5: Set parameter values in the Remote Config backend

Using the Firebase console or the Remote Config backend APIs , you can create new server-side default values that override the in-app values according to your desired conditional logic or user targeting. This section describes the Firebase console steps to create these values.

  1. In the Firebase console , open your project.
  2. Select Remote Config from the menu to view the Remote Config dashboard.
  3. Define parameters with the same names as the parameters that you defined in your app. For each parameter, you can set a default value (which will eventually override the corresponding in-app default value), and you can also set conditional values. To learn more, see Remote Config Parameters and Conditions .

Step 6: Fetch and activate values

  1. To fetch parameter values from the Remote Config backend, call the fetch() method. Any values that you set in the backend are fetched and stored in the Remote Config object.
  2. To make fetched parameter values available to your app, call the activate() method.

    For cases where you want to fetch and activate values in one call, you can use a fetchAndActivate() request to fetch values from the Remote Config backend and make them available to the app:

    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()
        }

    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();
                }
            });

Because these updated parameter values affect the behavior and appearance of your app, you should activate the fetched values at a time that ensures a smooth experience for your user, such as the next time that the user opens your app. See Remote Config loading strategies for more information and examples.

Step 7: Listen for updates in real time

After you fetch parameter values, you can use real-time Remote Config to listen for updates from the Remote Config backend. Real-time Remote Config signals to connected devices when updates are available and automatically fetches the changes after you publish a new Remote Config version.

Real-time updates are supported by the Firebase SDK for Android v21.3.0+ ( Firebase BoM v31.2.4+).

  1. In your app, use addOnConfigUpdateListener() to start listening for updates and automatically fetch any new parameter values. Implement the onUpdate() callback to activate the updated config.

    Kotlin+KTX

    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);
        }
    });
  2. The next time you publish a new version of your Remote Config , devices that are running your app and listening for changes will call the ConfigUpdateListener .

Throttling

If an app fetches too many times in a short time period, fetch calls are throttled and the SDK returns FirebaseRemoteConfigFetchThrottledException . Before SDK version 17.0.0, the limit was 5 fetch requests in a 60 minute window (newer versions have more permissive limits).

During app development, you might want to fetch and activate configs very frequently (many times per hour) to let you rapidly iterate as you develop and test your app. Real-time Remote Config updates automatically bypass the cache when the config is updated on the server. To accommodate rapid iteration on a project with up to 10 developers, you can temporarily set a FirebaseRemoteConfigSettings object with a low minimum fetch interval ( setMinimumFetchIntervalInSeconds ) in your app.

The default minimum fetch interval for Remote Config is 12 hours, which means that configs won't be fetched from the backend more than once in a 12 hour window, regardless of how many fetch calls are actually made. Specifically, the minimum fetch interval is determined in this following order:

  1. The parameter in fetch(long)
  2. The parameter in FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. The default value of 12 hours

To set the minimum fetch interval to a custom value, use FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) .

Следующие шаги

If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: