使用 Firebase 控制台或远程配置后端 API时,您定义一个或多个参数(键值对)并为这些参数提供应用内默认值。您可以通过定义服务器端参数值来覆盖应用内默认值。参数键和参数值是字符串,但当您在应用程序中使用这些值时,参数值可以转换为其他数据类型。
使用 Firebase 控制台、 Admin SDK或Remote Config REST API ,您可以为参数创建新的默认值,以及用于定位应用程序实例组的条件值。每次您在 Firebase 控制台中更新配置时,Firebase 都会创建并发布新版本的远程配置模板。以前的版本已存储,允许您根据需要检索或回滚。这些操作可通过 Firebase 控制台、Firebase Admin SDK 和 REST API 提供给您,并且在管理远程配置模板版本中有更广泛的描述。
本指南解释了参数、条件、规则、条件值,以及如何在远程配置服务器和您的应用程序中确定各种参数值的优先级。它还提供了有关用于创建条件的规则类型的详细信息。
条件、规则和条件值
条件用于定位一组应用程序实例。条件由一个或多个规则组成,这些规则必须全部评估为true
,条件才能对给定的应用程序实例评估为true
。如果规则的值未定义(例如,当没有可用值时),则该规则将评估为false
。
例如, if device_os = Android
,定义应用程序启动页面的参数可以使用简单规则根据操作系统类型显示不同的图像:
或者,可以使用时间条件来控制您的应用程序何时显示特殊促销商品。
一个参数可以有多个使用不同条件的条件值,并且参数可以在一个项目中共享条件。在 Firebase 控制台的“参数”选项卡中,您可以查看每个参数的条件值的提取百分比。此指标表示过去 24 小时内收到每个值的请求的百分比。
参数值优先级
一个参数可能有多个与之关联的条件值。以下规则确定从远程配置服务器获取哪个值,以及在特定时间点在给定应用程序实例中使用哪个值:
服务器端参数值根据以下优先级列表获取
首先,如果有任何条件对于给定的应用程序实例评估为
true
,则应用条件值。如果多个条件评估为true
,则 Firebase 控制台 UI 中显示的第一个(顶部)优先,并且当应用从后端获取值时提供与该条件关联的条件值。您可以通过在“条件”选项卡中拖放条件来更改条件的优先级。如果没有条件值的计算结果为
true
,则当应用程序从后端获取值时,将提供服务器端默认值。如果后台不存在某个参数,或者默认值设置为使用应用内默认值,则应用获取值时不会为该参数提供任何值。
在您的应用程序中,参数值根据以下优先级列表由get
方法返回
- 如果一个值是从后端获取然后激活的,应用程序将使用获取的值。激活的参数值是持久的。
如果没有从后端获取任何值,或者如果从远程配置后端获取的值尚未激活,应用程序将使用应用程序内的默认值。
有关获取和设置默认值的更多信息,请参阅下载远程配置模板默认值。
如果未设置应用内默认值,应用将使用静态类型值(例如
0
表示int
,false
表示boolean
)。
此图总结了远程配置后端和您的应用程序中参数值的优先级:
参数值数据类型
Remote Config 允许您为每个参数选择一种数据类型,并在模板更新之前根据该类型验证所有服务器端值。数据类型在getRemoteConfig
请求中存储和返回。
目前支持的类型有:
-
String
-
Boolean
-
Number
-
JSON
在 Firebase 控制台 UI 中,可以从参数键旁边的下拉列表中选择数据类型。在 REST API 中,可以使用参数对象中的value_type
字段设置类型。
参数组
Remote Config 允许您将参数组合在一起以获得更有条理的 UI 和心智模型。
例如,假设您在推出新的登录功能时需要启用或禁用三种不同的身份验证类型。使用 Remote Config,您可以根据需要创建三个参数以启用类型,然后将它们组织在名为“新登录”的组中,无需添加前缀或特殊排序。
您可以使用 Firebase 控制台或远程配置 REST API 创建参数组。您创建的每个参数组在您的远程配置模板中都有一个唯一的名称。创建参数组时,请记住:
- 参数在任何时候都只能包含在一个组中,并且参数键在所有参数中必须仍然是唯一的。
- 参数组名称限制为 256 个字符。
- 如果您同时使用 REST API 和 Firebase 控制台,请确保更新任何 REST API 逻辑以处理发布时的参数组。
使用 Firebase 控制台创建或修改参数组
您可以在 Firebase 控制台的“参数”选项卡中对参数进行分组。创建或修改组:
- 选择管理组。
- 选中要添加的参数的复选框,然后选择移至组。
- 选择现有组,或通过输入名称和描述并选择创建新组来创建新组。保存组后,可以使用“发布更改”按钮进行发布。
以编程方式创建组
Remote Config REST API提供了一种自动创建和发布参数组的方法。假设您熟悉 REST 并且设置为授权对 API 的请求,您可以执行这些步骤以编程方式管理组:
- 检索当前模板
- 添加 JSON 对象来表示您的参数组
- 使用 HTTP PUT 请求发布参数组。
parameterGroups
对象包含组键、嵌套描述和分组参数列表。请注意,每个组密钥必须是全局唯一的。
例如,下面是一个模板修订版的摘录,它添加了参数组“new menu”和一个参数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 或 Android 程序包名称,用于定义在远程配置规则中公开为应用程序 ID的属性。 按如下方式使用此属性:
|
应用版本 | 对于字符串值: 完全匹配, 包含, 不含, 正则表达式 对于数值: =、≠、>、≥、<、≤ | 指定要定位的应用程序版本。 在使用此规则之前,您必须使用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 应用程序。 |
语言 | 在 | 选择一种或多种语言。 | 如果给定应用程序实例安装在使用所列语言之一的设备上,则此规则对给定应用程序实例的计算结果为true 。 |
国家/地区 | 在 | 选择一个或多个地区或国家。 | 如果给定应用程序实例位于列出的任何地区或国家/地区,则此规则对给定应用程序实例的评估结果为true 。设备国家代码是使用请求中的设备 IP 地址或 Firebase Analytics 确定的国家代码确定的(如果 Analytics 数据与 Firebase 共享)。 |
用户受众 | 包括至少一个 | 从您为项目设置的 Google Analytics 受众列表中选择一个或多个。 | 此规则需要应用 ID 规则来选择与您的 Firebase 项目关联的应用。 注意:由于许多 Analytics 受众是由事件或用户属性定义的,这些事件或用户属性可以基于应用程序用户的操作,因此受众规则中的用户可能需要一些时间才能对给定的应用程序实例生效。 |
用户属性 | 对于字符串值: 包含, 不含, 完全匹配, 正则表达式 对于数值: =、≠、>、≥、<、≤ 注意:在客户端上,您只能为用户属性设置字符串值。对于使用数字运算符的条件,远程配置会将相应用户属性的值转换为整数/浮点数。 | 从可用的 Google Analytics 用户属性列表中选择。 | 要了解如何使用用户属性为非常特定的用户群自定义您的应用程序,请参阅远程配置和用户属性。 要了解有关用户属性的更多信息,请参阅以下指南: 使用完全匹配、包含、不包含或正则表达式运算符时,您可以选择多个值。 使用正则表达式运算符时,您可以创建RE2格式的正则表达式。您的正则表达式可以匹配全部或部分目标版本字符串。您还可以使用^和$锚点来匹配目标字符串的开头、结尾或整个内容。 注意:创建远程配置条件时,自动收集的用户属性目前不可用。 |
随机百分比的用户 | 滑块(在 Firebase 控制台中。REST API使用<= 、 > 和运算符between )。 | 0-100 | 使用此字段将更改应用到应用程序实例的随机样本(样本量小至 .0001%),使用滑块小部件将随机洗牌的用户(应用程序实例)分成组。 根据该项目中定义的种子,每个应用程序实例都被持久映射到一个随机的整数或分数。 除非您修改种子值,否则规则将使用默认键(在 Firebase 控制台中显示为编辑种子)。您可以通过清除“种子”字段将规则恢复为使用默认密钥。 要始终如一地处理给定百分比范围内的相同应用程序实例,请在不同条件下使用相同的种子值。或者,通过指定新种子,为给定的百分比范围选择一组新的随机分配的应用程序实例。 例如,要创建两个相关条件,每个条件都适用于 5% 的非重叠应用用户,您可以将一个条件配置为匹配 0% 到 5% 之间的百分比,并将另一个条件配置为匹配 5% 到 5% 之间的范围10%。要允许某些用户随机出现在两个组中,请为每个条件中的规则使用不同的种子值。 | 导入段 | 在 | 选择一个或多个导入的段。 | 此规则需要设置自定义导入段。 |
约会时间 | 之前,之后 | 指定的日期和时间,可以是设备时区,也可以是指定时区,例如“(GMT+11) 悉尼时间”。 | 将当前时间与设备获取时间进行比较。 |
先开 | 之前,之后 | 指定时区的指定日期和时间。 | 匹配指定时间范围内首次打开目标应用的用户。 需要以下 SDK:
|
安装编号 | 在 | 指定一个或多个安装 ID(最多 50 个)作为目标。 | 如果安装的 ID 在以逗号分隔的值列表中,则此规则对于给定安装的计算结果为true 。要了解如何获取安装 ID,请参阅检索客户端标识符。 |
搜索参数和条件
您可以使用远程配置参数选项卡顶部的搜索框从Firebase 控制台搜索项目的参数键、参数值和条件。
参数和条件的限制
在一个 Firebase 项目中,您最多可以有 2000 个参数和 500 个条件。参数键最长可达 256 个字符,必须以下划线或英文字母字符(AZ、az)开头,还可以包含数字。项目中参数值字符串的总长度不能超过 1,000,000 个字符。
查看参数和条件的变化
您可以从Firebase 控制台查看远程配置模板的最新更改。对于每个单独的参数和条件,您可以:
查看上次修改参数或条件的用户的名称。
如果更改发生在同一天,请查看自更改发布到活动远程配置模板以来经过的分钟数或小时数。
如果更改发生在一天或多天前,请查看更改发布到活动远程配置模板的日期。
参数更新
在 Remote Config Parameters页面上, Last published列显示最后修改每个参数的用户和更改的最后发布日期:
要查看分组参数的更改元数据,请展开参数组。
要按发布日期升序或降序排序,请单击上次发布的列标签。
条件更新
在 Remote Config Conditions页面上,您可以在每个条件下的Last modified旁边看到最后修改条件的用户和他们修改它的日期。
下一步
要开始配置您的 Firebase 项目,请参阅设置 Firebase 远程配置项目。