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

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

要求

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

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

    implementation 'com.google.firebase:firebase-config:16.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. 构建并运行快速入门示例。

工作原理

首先,快速入门示例会获取远程配置对象实例,并启用开发者模式,以便可以频繁刷新缓存:

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

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

mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);

此时,快速入门示例会创建 fetch() 请求,以从远程配置服务器提取值,然后调用 activateFetched(),以便您的应用可以使用这些值:

// cacheExpirationSeconds is set to cacheExpiration here, indicating the next fetch request
// will use fetch data from the Remote Config service, rather than cached parameter values,
// if cached parameter values are more than cacheExpiration seconds old.
// See Best Practices in the README for more information.
mFirebaseRemoteConfig.fetch(cacheExpiration)
        .addOnCompleteListener(this, new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Toast.makeText(MainActivity.this, "Fetch Succeeded",
                            Toast.LENGTH_SHORT).show();

                    // After config data is successfully fetched, it must be activated before newly fetched
                    // values are returned.
                    mFirebaseRemoteConfig.activateFetched();
                } else {
                    Toast.makeText(MainActivity.this, "Fetch Failed",
                            Toast.LENGTH_SHORT).show();
                }
                displayWelcomeMessage();
            }
        });

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

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

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

缓存和限制

首次成功提取值后,远程配置功能会在本地缓存值。 默认情况下,缓存在 12 小时后失效。不过,您可以将所需的缓存失效时间传递给 fetch 方法,更改特定提取操作的缓存失效时间。如果缓存中的值超过相应的缓存失效时间,远程配置功能会发出从服务刷新配置值的请求。如果您的应用多次使用 fetch 请求刷新值,请求会遭到阻止,并向您的应用提供缓存的值。

在应用开发期间,您不妨非常频繁地(每小时多次)刷新缓存,这样可以在开发和测试应用的同时快速迭代。为了让最多 10 名开发者对项目进行快速迭代,您可以暂时向应用添加将 isDeveloperModeEnabled 设为 trueFirebaseRemoteConfigSettings 对象,从而更改 FirebaseRemoteConfig 对象的缓存设置。

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面