Firebase Remote Config 使用入门


您可以使用 Firebase Remote Config 来定义应用中的参数并在云端更新它们的值。这样,您无需更新应用即可修改应用的外观和行为。

Remote Config 库用于存储应用内默认参数值,从 Remote Config 后端中提取更新后的参数值,以及控制提取的值何时可供应用使用。如需了解详情,请参阅 Remote Config 加载策略

第 1 步:将 Firebase 添加到您的应用

在使用 Remote Config 之前,您需要:

  • 注册 C++ 项目并将其配置为使用 Firebase。

    如果您的 C++ 项目已在使用 Firebase,那么该项目已经注册并已配置为使用 Firebase。

  • Firebase C++ SDK 添加到您的 C++ 项目。

请注意,将 Firebase 添加到 C++ 项目需要在 Firebase 控制台中和打开的 C++ 项目中执行若干任务(例如,从控制台下载 Firebase 配置文件,然后将配置文件移动到 C++ 项目中)。

第 2 步:将 Remote Config 添加到您的应用

Android

将 Firebase 添加到您的应用后:

  1. 创建一个 Firebase 应用,并将 JNI 环境和 Activity 作为参数传入:

    app = ::firebase::App::Create(::firebase::AppOptions(), jni_env, activity);

  2. 初始化 Remote Config 库,如下所示:

    ::firebase::remote_config::Initialize(app);

iOS+

将 Firebase 添加到您的应用后:

  1. 创建一个 Firebase 应用:

    app = ::firebase::App::Create(::firebase::AppOptions());

  2. 初始化 Remote Config 库,如下所示:

    ::firebase::remote_config::Initialize(app);

第 3 步:设置应用内默认参数值

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

  1. 使用 ConfigKeyValue* 对象或具有数组大小的 ConfigKeyValueVariant* 对象定义一组参数名称和默认参数值。

    如果您已配置 Remote Config 后端参数值,则可以下载包含这些键值对的文件,并使用该文件构建 map 对象。如需了解详情,请参阅下载 Remote Config 模板默认值

  2. 使用 SetDefaults() 将这些值添加到 Remote Config 对象。

第 4 步:获取要在应用中使用的参数值

现在,您可以从 Remote Config 对象中获取参数值。如果您已在 Remote Config 后端中设置值,然后提取并激活它们,这些值便可供您的应用使用。否则,您将获得使用 SetDefaults() 配置的应用内参数值。

如需获取这些值,请调用下列与应用所需数据类型对应的方法,并传入参数键作为调用的实参:

第 5 步:设置参数值

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

第 6 步:提取并激活值

  1. 如需从 Remote Config 后端提取参数值,请调用 Fetch() 方法。系统将提取您在后端中设置的所有值,并将其缓存在 Remote Config 对象中。
  2. 如需将提取的参数值提供给您的应用,请调用 ActivateFetched()

第 7 步:实时监听更新

提取参数值后,您可以使用实时 Remote Config 监听 Remote Config 后端中的更新。有更新可用时,实时 Remote Config 会向关联设备发送信号,并会在有新的 Remote Config 版本发布后自动提取更改内容。

适用于 Android 和 Apple 平台的 Firebase C++ SDK v11.0.0 及更高版本支持实时更新。

  1. 在您的应用中,调用 AddOnConfigUpdateListener 以开始监听更新并自动提取任何新参数值或更新后的参数值。以下示例会监听更新,并在 Activate 被调用时使用新提取的值显示更新后的欢迎辞。
remote_config->AddOnConfigUpdateListener(
    [](firebase::remote_config::ConfigUpdate&& config_update,
       firebase::remote_config::RemoteConfigError remote_config_error) {
      if (remote_config_error != firebase::remote_config::kRemoteConfigErrorNone) {
        printf("Error listening for config updates: %d", remote_config_error);
      }
      // Search the `updated_keys` set for the key "welcome_message."
      // `updated_keys` represents the keys that have changed since the last
      // fetch.
      if (std::find(config_update.updated_keys.begin(),
                    config_update.updated_keys.end(),
                    "welcome_message") != config_update.updated_keys.end()) {
        remote_config->Activate().OnCompletion(
            [&](const firebase::Future& completed_future,
               void* user_data) {
              // The key "welcome_message" was found within `updated_keys` and
              // can be activated.
              if (completed_future.error() == 0) {
                DisplayWelcomeMessage();
              } else {
                printf("Error activating config: %d", completed_future.error());
              }
            },
            nullptr);
      }
    });

当您下次发布 Remote Config 的新版本时,运行您的应用并监听更改的设备将调用配置更新监听器。

后续步骤

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