Google 致力于为黑人社区推动种族平等。查看具体举措

Remote Config 条件表达式参考

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

用于创建条件的元素

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

元素 说明
&&

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

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

app.build

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

注意:仅适用于 iOS 设备。使用 CFBundleVersion 的值。

app.version

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

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

app.id 一个基于应用的 Firebase 应用 ID 的元素
app.audiences 一个求值为 TRUEFALSE(具体取决于用户是否属于一个或多个 Firebase Analytics 受众群体)的元素。
app.predictionScores.id 一个用于评估给定 Firebase 预测 ID 的调用者的用户百分位概率的元素。
app.userProperty 一个求值为 TRUEFALSE(具体取决于 Firebase Analytics 用户属性的数值或字符串值)的元素。
app.operatingSystemAndVersion

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

注意:仅适用于 Web 应用。

app.browserAndVersion

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

注意:仅适用于 Web 应用。

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 一个基于设备上使用的操作系统(iOS 或 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 控制台中的显示方式。

支持的运算符

例如,如果实际应用版本为 123 或 492,则 app.build.notContains([123, 456]) 会返回 TRUE,而如果实际应用版本为 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.predictionScores.id .between(..., ...) 如果预测的调用者的用户百分位概率在给定范围内,则返回 TRUE
例如:


app.predictionScores.id('churn').between(0.25, 1.00)

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 <<===!=>=> 如果实际应用版本与所指定值的比较结果与相应运算符一致,则返回 TRUE
app.build .contains([...]) 如果任何目标值是实际应用版本的子字符串(例如“a”和“bc”是“abc”的子字符串),则返回 TRUE
app.build .notContains([...]) 如果目标值都不是实际应用版本的子字符串,则返回 TRUE
app.build .exactlyMatches([...]) 如果实际应用版本与列表中的任何目标值完全匹配,则返回 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])
    

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 <=> 如果 percent 字段中的值与随机分配的值的比较结果与相应运算符一致,则返回 TRUE

包含空字符串的参数和没有值的参数

当您在远程配置网页控制台中创建或修改参数值时,您可以选择将参数值设置为字符串值、(空字符串)没有值。如果设置为“没有值”,则会使系统使用应用内默认值,而不是远程配置模板中的值。

当您使用远程配置 API 为您的项目获取 JSON 格式的远程配置模板时,可以按如下方式表示没有值

"myCondition" : {
  "useInAppDefault" : true
},

同样,您可以按如下方式表示(空字符串)

"myCondition" : {
  "value" : ""
},