获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

远程配置参数和条件

使用 Firebase 控制台或Remote Config 后端 API时,您可以定义一个或多个参数(键值对)并为这些参数提供应用内默认值。您可以通过定义服务器端参数值来覆盖应用内默认值。参数键和参数值是字符串,但是当您在应用程序中使用这些值时,参数值可以转换为其他数据类型。

使用 Firebase 控制台、 Admin SDKRemote Config REST API ,您可以为参数创建新的默认值,以及用于定位应用实例组的条件值。每次您在 Firebase 控制台中更新配置时,Firebase 都会创建并发布新版本的远程配置模板。以前的版本被存储,允许您根据需要检索或回滚。您可以通过 Firebase 控制台、Firebase Admin SDK 和 REST API 使用这些操作,并在Manage Remote Config 模板版本中进行了更详细的描述。

本指南解释了参数、条件、规则、条件值,以及各种参数值在远程配置服务器和您的应用程序中的优先级。它还提供了有关用于创建条件的规则类型的详细信息。

条件、规则和条件值

条件用于定位一组应用程序实例。条件由一个或多个规则组成,对于给定的应用程序实例,这些规则必须全部计算为true ,条件才能计算为true 。如果规则的值未定义(例如,当没有可用值时),则该规则将评估为false

例如,定义应用启动页面的参数可以使用简单规则if device_os = Android根据操作系统类型显示不同的图像:

Firebase 控制台中“splash_page”参数的屏幕截图,显示了 iOS 的默认值和 Android 的条件值

或者,可以使用时间条件来控制您的应用何时显示特殊促销项目。

一个参数可以有多个使用不同条件的条件值,并且参数可以在项目内共享条件。在 Firebase 控制台的“参数”选项卡中,您可以查看每个参数的条件值的获取百分比。该指标表示过去 24 小时内收到每个值的请求的百分比。

参数值优先级

一个参数可能有几个与之关联的条件值。以下规则确定从远程配置服务器获取哪个值,以及在特定时间点在给定应用程序实例中使用哪个值:

服务端参数值根据以下优先级列表获取

  1. 首先,应用条件值,如果有条件对于给定的应用程序实例评估为true 。如果多个条件的计算结果为true ,则 Firebase 控制台 UI 中显示的第一个(顶部)具有优先权,并且在应用从后端获取值时提供与该条件关联的条件值。您可以通过在条件选项卡中拖放条件来更改条件的优先级。

  2. 如果没有条件值为true的条件值,则在应用程序从后端获取值时提供服务器端默认值。如果后端不存在参数,或者默认值设置为Use in-app default ,则在应用获取值时不会为该参数提供任何值。

在您的应用程序中,参数值由get方法根据以下优先级列表返回

  1. 如果从后端获取值然后激活,则应用程序使用获取的值。激活的参数值是持久的。
  2. 如果没有从后端获取值,或者从远程配置后端获取的值尚未激活,则应用使用应用内默认值。

    有关获取和设置默认值的更多信息,请参阅下载远程配置模板默认值

  3. 如果未设置应用内默认值,则应用使用静态类型值(例如0代表intfalse代表boolean )。

此图总结了远程配置后端和您的应用程序中参数值的优先级:

显示上述有序列表描述的流程的图表

参数值数据类型

远程配置允许您为每个参数选择一种数据类型,并在模板更新之前根据该类型验证所有服务器端值。数据类型在getRemoteConfig请求中存储和返回。

目前支持的类型有:

  • String
  • Boolean
  • Number
  • JSON

在 Firebase 控制台 UI 中,可以从参数键旁边的下拉菜单中选择数据类型。在 REST API 中,可以使用参数对象中的value_type字段来设置类型。

参数组

远程配置允许您将参数组合在一起,以获得更有条理的 UI 和心理模型。

例如,假设您在推出新的登录功能时需要启用或禁用三种不同的身份验证类型。使用远程配置,您可以创建三个参数以根据需要启用类型,然后将它们组织在一个名为“新登录”的组中,无需添加前缀或特殊排序。

您可以使用 Firebase 控制台或 Remote Config REST API 创建参数组。您创建的每个参数组在远程配置模板中都有一个唯一的名称。创建参数组时,请记住:

  • 参数在任何时候只能包含在一个组中,并且参数键在所有参数中仍然必须是唯一的。
  • 参数组名称限制为 256 个字符。
  • 如果您同时使用 REST API 和 Firebase 控制台,请确保更新任何 REST API 逻辑以处理发布时的参数组。

使用 Firebase 控制台创建或修改参数组

您可以在 Firebase 控制台的“参数”选项卡中对参数进行分组。创建或修改组:

  1. 选择管理组
  2. 选择要添加的参数的复选框,然后选择移动到组
  3. 选择现有组,或通过输入名称和描述并选择创建新组来创建新组。保存组后,可以使用发布更改按钮进行发布。

以编程方式创建组

Remote Config REST API提供了一种自动创建和发布参数组的方法。假设您熟悉 REST 并设置为授权对 API 的请求,您可以执行以下步骤以编程方式管理组:

  1. 检索当前模板
  2. 添加 JSON 对象以表示您的参数组
  3. 使用 HTTP PUT 请求发布参数组。

parameterGroups对象包含组键、嵌套描述和分组参数列表。请注意,每个组键必须是全局唯一的。

例如,以下是模板修订版的摘录,该修订版添加了带有一个参数的参数组“新菜单”, pumpkin_spice_season

{
  "parameters": {},
  "version": {
    "versionNumber": "1",

    …


  },
  "parameterGroups": {
    "new menu": {
      "description": "New Menu",
      "parameters": {
        "pumpkin_spice_season": {
          "defaultValue": {
            "value": "true"
          },
          "description": "Whether it's currently pumpkin spice season."
        }
      }
    }
  }
}

条件规则类型

Firebase 控制台支持以下规则类型。 Remote Config REST API 中提供了等效功能,详见条件表达式参考

规则类型操作员笔记
应用程序==从与您的 Firebase 项目关联的应用的应用 ID 列表中选择。当您将应用添加到 Firebase 时,您需要输入用于定义在远程配置规则中作为应用 ID公开的属性的包 ID 或 Android 包名称。

按如下方式使用此属性:
  • 对于 Apple 平台:使用应用程序的CFBundleIdentifier 。您可以在 Xcode 中应用的主要目标的General选项卡中找到Bundle Identifier
  • 对于 Android:使用应用程序的applicationId 。您可以在应用级build.gradle文件中找到applicationId
应用版本对于字符串值:
完全匹配,
包含,
不含,
正则表达式

对于数值:
=, ≠, >, ≥, <, ≤

指定要定位的应用版本。

在使用此规则之前,您必须使用App ID规则来选择与您的 Firebase 项目关联的 Android/Apple 应用。

对于 Apple 平台:使用应用程序的CFBundleShortVersionString

注意:确保您的 Apple 应用使用 Firebase Apple 平台 SDK 版本 6.24.0 或更高版本,因为早期版本中不会发送 CFBundleShortVersionString(请参阅发行说明)。

对于 Android:使用应用程序的versionName

此规则的字符串比较区分大小写。使用完全匹配包含不包含正则表达式运算符时,您可以选择多个值。

使用正则表达式运算符时,您可以创建RE2格式的正则表达式。您的正则表达式可以匹配全部或部分目标版本字符串。您还可以使用^$锚来匹配目标字符串的开头、结尾或全部内容。

内部编号对于字符串值:
完全匹配,
包含,
不含,
正则表达式

对于数值:
=, ≠, >, ≥, <, ≤

指定要定位的应用程序的构建。

在使用此规则之前,您必须使用App ID规则来选择与您的 Firebase 项目关联的 Apple 或 Android 应用。

此运算符仅适用于 Apple 和 Android 应用程序。它对应于 Apple 的应用程序的CFBundleVersion和 Android 的versionCode 。此规则的字符串比较区分大小写。

使用完全匹配包含不包含正则表达式运算符时,您可以选择多个值。

使用正则表达式运算符时,您可以创建RE2格式的正则表达式。您的正则表达式可以匹配全部或部分目标版本字符串。您还可以使用^$锚来匹配目标字符串的开头、结尾或全部内容。

平台== iOS
安卓
网络
操作系统==

指定要定位的操作系统。

在使用此规则之前,您必须使用App ID规则来选择与您的 Firebase 项目关联的Web 应用

如果操作系统及其版本与指定列表中的目标值匹配,则对于给定的 Web 应用程序实例,此规则评估为true
浏览器==

指定要定位的浏览器。

在使用此规则之前,您必须使用App ID规则来选择与您的 Firebase 项目关联的Web 应用

如果浏览器及其版本与指定列表中的目标值匹配,则对于给定的 Web 应用程序实例,此规则评估为true
设备类别是,不是移动的此规则评估访问您的 Web 应用程序的设备是移动设备还是非移动设备(桌面或控制台)。此规则类型仅适用于 Web 应用程序。
语言选择一种或多种语言。如果给定应用实例安装在使用所列语言之一的设备上,则此规则评估为true
国家/地区选择一个或多个地区或国家。如果给定应用程序实例位于所列的任何地区或国家/地区,则此规则评估为true 。设备国家/地区代码由请求中的设备 IP 地址或 Firebase Analytics 确定的国家/地区代码确定(如果 Analytics 数据与 Firebase 共享)。
用户受众包括至少一个从您为项目设置的 Google Analytics(分析)受众列表中选择一个或多个。

此规则需要 App ID 规则来选择与您的 Firebase 项目关联的应用。

注意:由于许多 Analytics 受众是由事件或用户属性定义的,这些属性可以基于应用用户的操作,因此受众中的用户规则可能需要一些时间才能对给定的应用实例生效。

用户属性对于字符串值:
包含,
不含,
完全匹配,
正则表达式

对于数值:
=, ≠, >, ≥, <, ≤

注意:在客户端上,您只能为用户属性设置字符串值。对于使用数字运算符的条件,远程配置将相应用户属性的值转换为整数/浮点数。
从可用的 Google Analytics(分析)用户属性列表中进行选择。要了解如何使用用户属性为非常特定的用户群定制应用程序,请参阅远程配置和用户属性

要了解有关用户属性的更多信息,请参阅以下指南:

使用完全匹配包含不包含正则表达式运算符时,可以选择多个值。

使用正则表达式运算符时,您可以创建RE2格式的正则表达式。您的正则表达式可以匹配全部或部分目标版本字符串。您还可以使用^$锚来匹配目标字符串的开头、结尾或全部内容。

注意:在创建远程配置条件时,自动收集的用户属性当前不可用。
随机百分位用户<=, > 0-100

使用此字段将更改应用于应用程序实例的随机样本(样本大小小至 0.0001%),使用<=>运算符将用户(应用程序实例)分组。

根据该项目中定义的,每个应用程序实例都永久映射到随机整数或小数。除非您选择或创建另一个密钥,否则规则将使用默认密钥(在 Firebase 控制台中显示为DEF )。您可以通过清除Randomize users using this key字段来返回使用默认键的规则。您可以跨规则使用单个键来一致地处理给定百分比范围内的相同应用程序实例。或者,您可以通过创建新键为给定百分比范围选择一组新的随机分配的应用程序实例。

例如,要创建两个相关条件,每个条件都适用于不重叠的 5% 应用程序用户,您可以让一个条件包含<= 5%规则,而另一个条件包含> 5%规则和<= 10%规则。为了使某些用户可以随机出现在两个组中,请在每个条件中为规则使用不同的键。

进口段选择一个或多个导入的片段。此规则需要设置自定义导入段
约会时间之前,之后指定的日期和时间,可以是设备时区或指定的时区,例如“(GMT+11) 悉尼时间”。将当前时间与设备获取时间进行比较。
安装 ID指定一个或多个安装 ID(最多 50 个)作为目标。如果给定安装的 ID 在逗号分隔的值列表中,则此规则评估为true

要了解如何获取安装 ID,请参阅检索客户端标识符

搜索参数和条件

您可以使用远程配置参数选项卡顶部的搜索框从Firebase 控制台搜索项目的参数键、参数值和条件。

参数和条件的限制

在一个 Firebase 项目中,您最多可以有 2000 个参数和最多 500 个条件。参数键最长可达 256 个字符,必须以下划线或英文字母字符(AZ、az)开头,还可以包含数字。项目中参数值字符串的总长度不能超过 1,000,000 个字符。

查看参数和条件的更改

您可以从Firebase 控制台查看对远程配置模板的最新更改。对于每个单独的参数和条件,您可以:

  • 查看上次修改参数或条件的用户的名称。

  • 如果更改发生在同一天,请查看自更改发布到活动远程配置模板以来经过的分钟数或小时数。

  • 如果更改发生在过去的一天或多天,请查看更改发布到活动远程配置模板的日期。

参数更新

在 Remote Config Parameters页面上, Last published列显示最后修改每个参数的用户以及更改的最后发布日期:

  • 要查看分组参数的更改元数据,请展开参数组。

  • 要按发布日期升序或降序排序,请单击上次发布的列标签。

条件更新

在远程配置条件页面上,您可以在每个条件下方的最后修改时间旁边查看最后修改条件的用户和修改日期。

下一步

要开始配置您的 Firebase 项目,请参阅设置 Firebase 远程配置项目