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

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

用於建立條件的元素

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

元素 說明
&&

如果條件使用多個元素,則可用於建立元素的邏輯「和」。如果在 REST 語法中使用元素時未加上 && ,該元素就會視為條件。

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

app.build

根據應用程式版本編號的值,評估結果為 TRUEFALSE

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

app.version

根據應用程式版本號碼的值評估為 TRUEFALSE

注意:如果是 Android 裝置,請使用 versionName 的值;如果是 Apple 裝置,請使用 CFBundleShortVersionString 的值。

app.id 以應用程式的 Firebase 應用程式 ID 為準的元素
app.audiences 根據使用者是否屬於一或多個 Firebase Analytics 目標對象,評估結果為 TRUEFALSE 的元素。
app.firstOpenTimestamp 根據使用者初次啟動應用程式的時間所產生的元素,取自 Google Analytics first_open 事件。使用 ISO 日期格式,並可選擇指定固定時區,例如 app.firstOpenTimestamp >= ('2022-10-31T14:37:47', 'America/Los_Angeles')。 如果沒有指定時區,系統會使用格林威治標準時間。
app.userProperty 根據Google Analytics使用者屬性的數值或字串值,評估為 TRUEFALSE 的元素。
app.operatingSystemAndVersion

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

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

app.browserAndVersion

根據執行應用程式的瀏覽器而定的元素。 當瀏覽器和瀏覽器版本符合指定目標時,會評估為 TRUE

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

app.firebaseInstallationId 根據特定裝置安裝 ID 的元素。 如果安裝 ID 與指定安裝 ID 之一相符,則評估結果為 TRUE
app.customSignal 根據自訂信號條件的數值、語意或字串值,評估為 TRUEFALSE 的元素。
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. 條件運算式,評估結果為 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.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') 如果未指定時區,系統會使用格林威治標準時間。

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

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

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

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

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

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

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

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

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

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

如果實際應用程式版本不含任何目標值,則傳回 TRUE

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 <=>

比較目前時間與條件的目標時間,並根據運算子評估為 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