Vai alla console

Firebase 远程配置 Android 示例应用演示

本指南将逐步介绍如何将远程配置功能集成到您的 Android 应用。要详细了解适用于 Android 的 Remote Config API,请参阅 com.google.firebase.remoteconfig

要求

请按将 Firebase 添加到您的 Android 项目中的说明操作,设置您的项目。

接下来,向您的应用模块的 build.gradle 添加以下依赖项:

    implementation 'com.google.firebase:firebase-config:18.0.0'

创建用于快速入门示例的远程配置项目

快速入门示例展示了如何使用远程配置功能来定义示例应用的欢迎消息。运行快速入门示例之前,应当先设置远程配置项目。

Firebase 控制台中,点击新建项目,然后按照说明设置 Firebase 远程配置项目,其参数如下:

参数键 默认值 备注:
welcome_message Welcome to this sample app 可改用其他欢迎消息。
welcome_message_caps false 若设为 true,显示的欢迎消息全部为大写。

配置项目后,运行快速入门示例,查看您在 Firebase 控制台中定义的欢迎消息。您可以在项目中更改这些参数的值,然后在快速入门示例中点按提取远程配置 (Fetch Remote Config) 按钮,了解如何通过远程配置更新应用。

构建并运行快速入门示例

  1. 下载并解压缩快速入门示例代码
  2. 打开 Android Studio。
  3. 依次选择文件 > 打开,转到已提取示例代码的位置,然后打开配置文件夹。
  4. 构建并运行快速入门示例。

工作原理

首先,示例会获取一个远程对象实例,并设置最小提取间隔以便可以频繁刷新:

Java

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setDeveloperModeEnabled(BuildConfig.DEBUG)
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettings(configSettings);

Kotlin

remoteConfig = FirebaseRemoteConfig.getInstance()val configSettings = FirebaseRemoteConfigSettings.Builder()
        .setDeveloperModeEnabled(BuildConfig.DEBUG)
        .setMinimumFetchIntervalInSeconds(4200)
        .build()
remoteConfig.setConfigSettings(configSettings)

然后,快速入门示例会通过 XML 文件设置应用内默认值:

Java

mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);

Kotlin

remoteConfig.setDefaults(R.xml.remote_config_defaults)

现在,示例将创建一个 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

remoteConfig.fetchAndActivate()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val updated = task.getResult()
                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()
        }

您可以在传递给回调函数的 FirebaseRemoteConfig 对象上调用可用的一种 get<type> 方法(例如 getLong),从而访问配置值。

至此,欢迎消息已更新,您可以在应用中显示更新后的欢迎消息了:

Java

private void displayWelcomeMessage() {
    String welcomeMessage = mFirebaseRemoteConfig.getString(WELCOME_MESSAGE_KEY);
    if (mFirebaseRemoteConfig.getBoolean(WELCOME_MESSAGE_CAPS_KEY)) {
        mWelcomeTextView.setAllCaps(true);
    } else {
        mWelcomeTextView.setAllCaps(false);
    }
    mWelcomeTextView.setText(welcomeMessage);
}

Kotlin

private fun displayWelcomeMessage() {
    val welcomeMessage = remoteConfig.getString(WELCOME_MESSAGE_KEY)
    welcomeTextView.isAllCaps = remoteConfig.getBoolean(WELCOME_MESSAGE_CAPS_KEY)
    welcomeTextView.text = welcomeMessage
}

companion object {

    private const val TAG = "MainActivity"

    // Remote Config keys
    private const val LOADING_PHRASE_CONFIG_KEY = "loading_phrase"
    private const val WELCOME_MESSAGE_KEY = "welcome_message"
    private const val WELCOME_MESSAGE_CAPS_KEY = "welcome_message_caps"
}

限制

如果应用在短时间内提取次数太多,提取调用可能会受到限制。这种情况下,SDK 会返回 FirebaseRemoteConfigFetchThrottledException

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

远程配置的默认最小提取间隔为 12 小时,这意味着在 12 小时的时间段内最多从后端提取一次配置。具体而言,按以下顺序确定最小提取间隔:

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

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

后续步骤

在尝试了快速入门示例并了解了 API 的工作原理后,您就可以查看实时传播远程配置更新动态和使用 REST API 等高级远程配置主题了。请参阅以下资源: