Remote Config 条件表达式参考文档

本页面包含有关使用 Remote Config 后端 API 或 Firebase 控制台构建条件表达式的参考信息。如需详细了解如何设置及使用后端 API,请参阅以编程方式修改 Remote Config

用于创建条件的元素

Remote Config REST API 支持那些您在使用 Firebase 控制台配置 Remote Config 时可用于创建条件的元素:

元素 说明
&&

用于在多个元素之间创建逻辑“与”关系(如果为某个条件使用了多个元素)。如果在 REST 语法中使用的元素不带 && ,系统会将该元素视为一个条件。

注意:&& 前后必须留一个空格。例如:element1 && element2

app.build

求值为 TRUEFALSE,具体取决于应用 build 号的值。

注意:此功能仅适用于 Apple 和 Android 设备。对于 Apple,使用 CFBundleVersion 的值;对于 Android,使用 versionCode 的值。

app.version

求值为 TRUEFALSE,具体取决于应用版本号的值。

注意:对于 Android 设备,使用 versionName 的值;对于 Apple 设备,则使用 CFBundleShortVersionString 的值。

app.id 一个基于应用的 Firebase 应用 ID 的元素
app.audiences 一个求值为 TRUEFALSE(具体取决于用户是否属于一个或多个 Firebase Analytics 受众群体)的元素。
app.firstOpenTimestamp 一个基于用户首次打开应用的时间的元素,从 Google Analytics first_open 事件中获取。使用 ISO 日期格式和指定固定时区的选项;例如 app.firstOpenTimestamp >= ('2022-10-31T14:37:47', 'America/Los_Angeles')。如果未指定时区,则使用 GMT。
app.userProperty 一个求值为 TRUEFALSE(具体取决于 Firebase Analytics 用户属性的数值或字符串值)的元素。
app.operatingSystemAndVersion

一个基于运行应用的操作系统的元素。如果操作系统和操作系统版本与指定的目标匹配,则求值为 TRUE

注意:仅适用于 Web 应用。

app.browserAndVersion

一个基于运行应用的浏览器的元素。如果浏览器和浏览器版本与指定的目标匹配,则求值为 TRUE

注意:仅适用于 Web 应用。

app.firebaseInstallationId 一个基于特定设备安装 ID 的元素。 如果安装 ID 与其中一个指定的安装 ID 匹配,则求值为 TRUE
device.country 一个基于设备所在国家/地区的元素,遵循 ISO 3166-1 alpha-2 标准(例如,US 或 UK)。如果国家/地区与预期的国家/地区代码匹配,则求值为 TRUE
device.dateTime 一个基于上次提取设备的执行时间的元素。 使用 ISO 日期格式和指定固定时区的选项;例如 dateTime('2017-03-22T13:39:44', 'America/Los_Angeles')
device.language 一个基于设备上所选的语言的元素。该语言使用 IETF 语言标记(例如 es-ES、pt-BR 或 en-US)来表示。如果语言与预期的语言代码匹配,则求值为 TRUE
device.os 一个基于设备上使用的操作系统(Apple 或 Android)的元素。如果设备的操作系统是预期的类型,则求值为 TRUE
percent 当用户对应于随机分配的(小数型)百分比(抽样规模最小可以是 0.000001%)时,求值为 TRUE

只有一个元素的条件包含三个字段:

  1. 任意定义的 name(最多 100 个字符)
  2. 一个由上述元素组成且求值为 TRUEFALSE 的条件表达式。
  3. (可选)tagColor,可以是“BLUE”“BROWN”“CYAN”“DEEP_ORANGE”“GREEN”“INDIGO”“LIME”“ORANGE”“PINK”“PURPLE”或“TEAL”。颜色不区分大小写,仅会影响条件在 Firebase 控制台中的显示方式。

支持的运算符

例如,如果实际应用 build 为 123 或 492,则 app.build.notContains([123, 456]) 会返回 TRUE,而如果实际应用 build 为 999,则返回 FALSE。 例如,如果实际应用版本为 123 或 492,则 app.version.notContains([123, 456]) 会返回 TRUE,而如果实际应用版本为 999,则返回 FALSE
元素 支持的运算符 说明
app.audiences .inAtLeastOne([...]) 如果实际受众群体与列表中的至少一个受众群体名称匹配,则返回 TRUE
例如:

app.audiences.inAtLeastOne(['Audience 1', 'Audience 2'])

app.audiences .notInAtLeastOne([...]) 如果实际受众群体与列表中的至少一个受众群体名称不匹配,则返回 TRUE
app.audiences .inAll([...]) 如果实际受众群体是列表中每个受众群体的成员,则返回 TRUE
app.audiences .notInAll([...]) 如果实际受众群体不是列表中任何受众群体的成员,则返回 TRUE
app.firstOpenTimestamp <=, > first_open 事件的时间与条件中的指定时间进行比较,并根据运算符返回 TRUEFALSE
用法示例:
app.firstOpenTimestamp >= ('2022-10-31T14:37:47', 'America/Los_Angeles').
如需指定范围,请使用以下表达式:
app.firstOpenTimestamp >= ('2022-11-01T00:00:00') && app.firstOpenTimestamp < ('2022-12-01T00:00:00') 如果未指定时区,系统将使用 GMT。
app.userProperty <<===!=>=> 如果实际用户属性的数字值与所指定值的比较结果与相应运算符一致,则返回 TRUE
app.userProperty .contains([...]) 如果任意目标值是实际用户属性的子字符串,则返回 TRUE
app.userProperty .notContains([...]) 如果目标值都不是实际用户属性的子字符串,则返回 TRUE
app.userProperty .exactlyMatches([...]) 如果实际用户属性与列表中的任意目标值完全匹配(区分大小写),则返回 TRUE
app.userProperty .matches([...]) 如果列表中的任意目标正则表达式与整个实际值或该值的子字符串匹配,则返回 TRUE。如需强制与整个字符串匹配,请在正则表达式前面和后面分别加上“^”和“$”。使用 RE2 语法。
app.id == 如果指定的值与相应应用的 ID 匹配,则返回 TRUE
app.build <<===!=>=> 如果实际应用 build 的数字值与所指定值的比较结果与相应运算符一致,则返回 TRUE
app.build .contains([...]) 如果任意目标值是实际应用 build 的子字符串(例如“a”和“bc”是“abc”的子字符串),则返回 TRUE
app.build .notContains([...]) 如果目标值都不是实际应用 build 的子字符串,则返回 TRUE
app.build .exactlyMatches([...]) 如果实际应用 build 与列表中的任意目标值完全匹配,则返回 TRUE
app.build .matches([...]) 如果列表中的任意目标正则表达式与整个实际值或该值的子字符串匹配,则返回 TRUE。如需强制与整个字符串匹配,请在正则表达式前面和后面分别加上“^”和“$”。使用 RE2 语法。
app.version <<===!=>=> 如果实际应用版本的数字值与所指定值的比较结果与相应运算符一致,则返回 TRUE
app.version .contains([...]) 如果任意目标值是实际应用版本的子字符串(例如“a”和“bc”是“abc”的子字符串),则返回 TRUE
app.version .notContains([...]) 如果目标值都不是实际应用版本的子字符串,则返回 TRUE
app.version .exactlyMatches([...]) 如果实际应用版本与列表中的任意目标值完全匹配,则返回 TRUE
app.version .matches([...]) 如果列表中的任意目标正则表达式与整个实际值或该值的子字符串匹配,则返回 TRUE。如需强制与整个字符串匹配,请在正则表达式前面和后面分别加上“^”和“$”。使用 RE2 语法。
app.operatingSystemAndVersion .inOne([...]) 如果操作系统和版本与列表中的任意目标值匹配,则返回 TRUE
例如:

    app.operatingSystemAndVersion.inOne([operatingSystemName('Macintosh').version.==('10.15')])
    

app.browserAndVersion .inOne([...]) 如果浏览器和版本与列表中的任意目标值匹配,则返回 TRUE
例如:

    app.browserAndVersion.inOne([browserName('Chrome').anyVersion])
    

app.firebaseInstallationId in [...] 如果安装 ID 与列表中指定的任意 ID 匹配,则返回 TRUE。用法示例:app.firebaseInstallationId in ['eyJhbGciOiJFUzI1N_iIs5', 'eapzYQai_g8flVQyfKoGs7']
device.country in [...] 如果设备的国家/地区与列表中指定的任何国家/地区匹配,则返回 TRUE。用法示例:device.country in ['gb', 'us']。可以使用请求中设备的 IP 地址或由 Firebase Analytics 确定的国家/地区代码(如果 Analytics 与 Firebase 共享其数据)来确定设备国家/地区代码。
device.dateTime <=> 将相应条件的当前时间与目标时间进行比较,并根据运算符求值为 TRUEFALSE。用法示例:dateTime < dateTime('2017-03-22T13:39:44')
device.language in [...] 如果相应应用的任意语言与列表中的某种语言匹配,则返回 TRUE。用法示例:device.language in ['en-UK', 'en-US']
device.os ==!= 如果设备的操作系统与该字段中的值的比较结果与相应运算符一致,则返回 TRUE
percent <=>between 如果 percent 字段中的值与随机分配的值的比较结果与相应运算符一致,则返回 TRUE

您可以指定一个种子,以便在给定的百分比范围内选择一组新的随机分配的应用实例,如条件规则类型中所述。

为此,请在相应运算符之前提供此种子的名称,如以下示例所示:

percent('keyName') <= 10

如需配置特定范围,您可以使用 between 运算符。如需使用默认种子配置 20 到 60 之间的用户范围,请使用以下表达式:

percent between 20 and 60

如需使用自定义种子配置 60 到 80 之间的用户范围,请使用以下表达式:

percent('seedName') between 60 and 80