遠端設定條件運算式參考資料

本頁提供參考資訊,說明如何使用 Remote Config 後端 API 或 Firebase 控制台建構條件運算式。如要進一步瞭解如何設定及使用後端 API,請參閱「透過程式輔助方式修改遠端設定」。

用於建立條件的元素

Remote Config REST API 支援的元素,與您在 Firebase 控制台設定 Remote Config 時可用來建立條件的元素相同:

元素 說明
&&

如果條件使用多個元素,則用於建立元素的邏輯「and」。如果在 REST 語法中使用元素,但沒有 && ,該元素會視為條件。

注意:和號前後必須加上空格。例如:element1 && element2。

app.build

根據應用程式版本號碼的值,評估為 TRUE 或 FALSE。

注意:僅適用於 Apple 和 Android 裝置。如果是 Apple,請使用 CFBundleVersion 的值;如果是 Android,請使用 versionCode 的值。

app.version

根據應用程式版本號碼的值,評估為 TRUE 或 FALSE。

注意:Android 裝置請使用 versionName 的值,Apple 裝置則使用 CFBundleShortVersionString 的值。

app.id 根據應用程式 Firebase 應用程式 ID 建立的元素
app.audiences 根據使用者是否在一或多個 Firebase Analytics 目標對象中,評估為 TRUE 或 FALSE 的元素。
app.firstOpenTimestamp 根據使用者首次啟動應用程式的時間,從 Google Analytics first_open 事件取得的元素。使用 ISO 日期格式,並可選擇指定固定時區,例如 app.firstOpenTimestamp >= ('2022-10-31T14:37:47', 'America/Los_Angeles')。如未指定時區,則會使用格林威治標準時間。
app.userProperty 根據Google Analytics使用者屬性的數值或字串值,評估為 TRUE 或 FALSE 的元素。
app.operatingSystemAndVersion

根據應用程式執行的作業系統而定的元素。如果 OS 和 OS 版本與指定目標相符,則評估為 TRUE。

注意:僅適用於網頁應用程式。

app.browserAndVersion

根據執行應用程式的瀏覽器,建立元素。 如果瀏覽器和瀏覽器版本與指定目標相符,則評估為 TRUE。

注意:僅適用於網頁應用程式。

app.firebaseInstallationId 根據特定裝置安裝 ID 建立的元素。 如果安裝 ID 與其中一個指定的安裝 ID 相符,則評估為 TRUE。
app.customSignal 根據自訂信號條件的數值、語意或字串值,評估為 TRUE 或 FALSE 的元素。
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) 建立的元素。 如果裝置 OS 是預期類型,則評估為 TRUE。
percent 根據使用者是否包含在隨機指派的小數百分比中 (樣本大小最小為 0.000001%),評估為 TRUE。

單一元素條件包含三個欄位:

  1. 任意定義的 name (最多 100 個字元)
  2. 由上表所示元素組成的條件運算式,可評估為 TRUE 或 FALSE。
  3. (選用) tagColor,可以是「BLUE」、「BROWN」、「CYAN」、「DEEP_ORANGE」、「GREEN」、「INDIGO」、「LIME」、「ORANGE」、「PINK」、「PURPLE」或「TEAL」。顏色不區分大小寫,且只會影響條件在 Firebase 控制台中的顯示方式。

支援的運算子

元素 支援的運算子 說明
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 事件的時間與條件中指定的時間,並根據運算子傳回 TRUE 或 FALSE。
使用範例:
app.firstOpenTimestamp >= ('2022-10-31T14:37:47', 'America/Los_Angeles')。
如要指定範圍:
app.firstOpenTimestamp >= ('2022-11-01T00:00:00') && app.firstOpenTimestamp < ('2022-12-01T00:00: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([...])

如果任何目標值是實際應用程式建構作業的子字串,則傳回 TRUE,例如「a」和「bc」是「abc」的子字串。

app.build .notContains([...])

如果沒有任何目標值是實際應用程式建構作業的子字串,則傳回 TRUE。舉例來說,如果實際的應用程式版本是 123 或 492,app.build.notContains([123, 456]) 會傳回 TRUE,但如果實際的應用程式版本是 999,則會傳回 FALSE。

app.build .exactlyMatches([...])

如果實際應用程式版本與清單中的「任何」目標值完全相符,則傳回 TRUE。

app.build .matches([...])

如果清單中的「任何」目標規則運算式與實際值的子字串或整個實際值相符,則傳回 TRUE。如要強制比對整個字串,請在規則運算式前面加上「^」,並在後面加上「$」。使用 RE2 語法。

app.version <、<=、==、!=、>=、>

如果實際應用程式版本與指定值的數值比較結果符合運算子,則傳回 TRUE。

注意:數值比較運算子僅支援數值語意版本 (例如 1.2.3),不支援預先發布版後置字串或連字號 (例如 -beta 或 -rc)。如果版本字串包含非數值後置字串或連字號,請改用字串運算子 (例如 .matches 或 .contains)。

app.version .contains([...])

如果任何目標值是實際應用程式版本的子字串,則傳回 TRUE,例如「a」和「bc」是「abc」的子字串。

app.version .notContains([...])

如果沒有任何目標值是實際應用程式版本的子字串,則傳回 TRUE。舉例來說,如果實際應用程式版本為 123 或 492,app.version.notContains([123, 456]) 會傳回 TRUE,但如果實際應用程式版本為 999,則會傳回 FALSE。

app.version .exactlyMatches([...])

如果實際應用程式版本與清單中的「任何」目標值完全相符,則傳回 TRUE。

app.version .matches([...])

如果清單中的「任何」目標規則運算式與實際值的子字串或整個實際值相符,則傳回 TRUE。如要強制比對整個字串,請在規則運算式前面加上「^」,並在後面加上「$」。使用 RE2 語法。

app.operatingSystemAndVersion .inOne([...])

如果 OS 和版本與清單中的「任何」目標值相符,則傳回 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']

app.customSignal <、<=、==、!=、>=、>

如果自訂信號條件與指定值的數值比較結果符合運算子,則傳回 TRUE。

app.customSignal .contains([...])

如果任何目標值是實際自訂信號條件的子字串,則傳回 TRUE。

app.customSignal .notContains([...])

如果任何目標值是實際自訂信號條件的子字串,則傳回 TRUE。

app.customSignal .exactlyMatches([...])

如果實際的自訂信號條件與清單中的任何目標值完全比對 (區分大小寫),則傳回 TRUE。

app.customSignal .matches([...])

如果清單中的任何目標規則運算式與實際自訂信號條件的子字串或整個字串相符,則傳回 TRUE。如要強制比對整個字串,請在規則運算式前面加上「^」,並在後面加上「$」。使用 RE2 語法。

version(app.customSignal) <、<=、==、!=、>=、>

如果自訂信號條件與指定值的語意比較結果符合運算子,則傳回 TRUE。

device.country in [...]

如果裝置的國家/地區與清單中指定的任何國家/地區相符,則傳回 TRUE。使用範例:device.country in ['gb', 'us']。 系統會根據要求中的裝置 IP 位址,或 Firebase Analytics 判定的國家/地區代碼 (如果 Analytics 資料與 Firebase 共用),判斷裝置國家/地區代碼。

device.dateTime <=、>

比較目前時間與條件的目標時間,並根據運算子評估為 TRUE 或 FALSE。使用範例: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