Firebase 远程配置使用入门 (Android)

您可以使用 Firebase 远程配置来定义应用中的参数并在云端更新它们的值。这样,您无需更新应用即可修改应用的外观和行为。本指南逐步介绍了入门步骤并提供了一些示例代码,所有这些代码都可以从 firebase/quickstart-android GitHub 代码库中克隆或下载。

将 Firebase 和远程配置 SDK 添加到您的应用

  1. 将 Firebase 添加到您的 Android 项目(如果尚未添加)。

  2. 对于远程配置,将应用实例有条件地定位到用户属性、受众群体和 Firebase 预测,需要使用 Google Analytics(分析)。请务必在项目中启用 Google Analytics(分析)

  3. 将远程配置 Android 库的依赖项添加到您的模块(应用级)Gradle 文件(通常为 app/build.gradle):

    此外,在设置 Analytics(分析)时,您还需要将适用于 Google Analytics(分析)的 Firebase SDK 添加到您的应用中。

    Java

    implementation 'com.google.firebase:firebase-config:19.1.4'
    implementation 'com.google.firebase:firebase-analytics:17.4.3'
    

    Kotlin+KTX

    implementation 'com.google.firebase:firebase-config-ktx:19.1.4'
    implementation 'com.google.firebase:firebase-analytics-ktx:17.4.3'
    

获取远程配置单例对象

获取远程配置对象实例,并设置最小提取间隔以实现频繁刷新:

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)

此单例对象用于存储应用内默认参数值,从后端提取更新的参数值,以及控制提取的值何时可用于您的应用。

在开发期间,建议设置相对较短的最小提取间隔。如需了解详情,请参阅限制

设置应用内默认参数值

您可以在远程配置对象中设置应用内默认参数值,以使应用在连接到远程配置后端之前能够按预期运行,并且确保当后端中未设置任何值时,可以使用默认值。

  1. 使用 Map 对象或存储在您应用的 res/xml 文件夹中的 XML 资源文件指定一组参数名称和默认参数值。远程配置快速入门示例应用使用 XML 文件来指定默认参数名称和值。
  2. 使用 setDefaultsAsync(int) 方法将这些值添加到远程配置对象,如下所示:

Java

mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

Kotlin+KTX

remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

获取要在应用中使用的参数值

现在,您可以从远程配置对象中获取参数值。如果您在后端中设置值、提取并激活它们,这些值便可供您的应用使用。否则,您将获得使用 setDefaultsAsync(int) 方法配置的应用内参数值。如需获取这些值,请调用下列与应用所需数据类型对应的方法,并以实参 (argument) 形式提供形参 (parameter) 键:

在远程配置后端中设置参数值

借助 Firebase 控制台或远程配置后端 API,您可以创建新的服务器端默认值,这些值会根据所需的条件逻辑或用户定位替换应用内值。本部分逐步介绍了在 Firebase 控制台中创建上述值的步骤。

  1. Firebase 控制台中,打开您的项目。
  2. 从菜单中选择远程配置以查看远程配置信息中心。
  3. 使用您在应用中指定的参数名称指定参数。对于每个参数,您可以设置一个默认值(最终将替换应用内相应的默认值),也可以设置条件值。如需了解详情,请参阅远程配置参数和条件

提取并激活值

  1. 要从远程配置后端提取参数值,请调用 Fetch() 方法。系统将提取您在后端中设置的所有值,并将其存储在远程配置对象中。
  2. 要使应用可以使用提取的参数值,请调用 activate() 方法。

    如果您想通过一次调用提取并激活值,请使用 fetchAndActivate() 请求从远程配置后端提取值并使其可供应用使用:

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

由于这些更新后的参数值会影响应用的行为和外观,因此您应该谨慎选择激活所提取值的时机,例如,可在用户下次打开您的应用时激活,以确保为用户提供流畅的体验。如需了解更多信息和示例,请参阅远程配置加载策略

限制

如果应用在短时间内执行提取的次数太多,则提取调用会受到限制,并且 SDK 会返回 FirebaseRemoteConfigFetchThrottledException。在 SDK 17.0.0 版本之前,应用在 60 分钟时间内最多可以发送 5 次提取请求(在较新版本中,此限制更为宽松)。

在应用开发期间,您可能需要非常频繁地(每小时多次)提取和激活配置,这样可以在开发和测试应用的同时快速迭代。为了让最多 10 名开发者对项目进行快速迭代,您可以暂时在应用中设置一个最小提取间隔 (setMinimumFetchIntervalInSeconds) 较短的 FirebaseRemoteConfigSettings 对象。

远程配置的默认最小提取间隔为 12 小时,这意味着无论实际上调用了多少次提取方法,在 12 小时的时间段内最多只会从后端提取一次配置。具体而言,系统按以下顺序确定最小提取间隔:

  1. fetch(long) 中的参数
  2. FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long) 中的参数
  3. 默认值 12 小时

如需将最小提取间隔设为自定义值,请使用 FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)

后续步骤

浏览远程配置使用场景并查看一些关键的概念和高级策略文档(如果您尚未这样做),包括: