Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

遠程配置參數和條件

使用 Firebase 控制台或遠程配置後端 API 時,您可以定義一個或多個參數(鍵值對)並為這些參數提供應用內默認值。您可以通過定義服務器端參數值來覆蓋應用內默認值。參數鍵和參數值是字符串,但當您在應用程序中使用這些值時,可以將參數值轉換為其他數據類型。

使用 Firebase 控制台或遠程配置 REST API ,您可以為參數創建新的默認值,以及用於定位應用實例組的條件值。每次您在 Firebase 控制台中更新配置時,Firebase 都會創建並發布遠程配置模板的新版本。存儲以前的版本,允許您根據需要檢索或回滾。您也可以通過 REST API 使用這些操作。

本指南解釋了參數、條件、規則、條件值,以及如何在遠程配置服務器和您的應用程序中對各種參數值進行優先級排序。它還提供有關用於創建條件的規則類型的詳細信息。

條件、規則和條件值

條件用於定位一組應用程序實例。條件由一個或多個規則組成,這些規則必須全部評估為true ,條件才能為給定的應用程序實例評估為true 。如果規則的值未定義(例如,當沒有可用值時),該規則將評估為false

例如,定義應用程序啟動頁面的參數可以使用簡單規則if device_os = Android顯示基於操作系統類型的不同圖像:

或者,可以使用時間條件來控制您的應用何時顯示特殊促銷項目。

一個參數可以有多個使用不同條件的條件值,並且參數可以在一個項目中共享條件。在 Firebase 控制台的“參數”選項卡中,您可以查看每個參數條件值的提取百分比。此指標表示過去 24 小時內收到每個值的請求的百分比。

參數值優先級

一個參數可能有幾個與之關聯的條件值。以下規則確定從遠程配置服務器獲取哪個值,以及在特定時間點在給定應用程序實例中使用哪個值:

根據以下優先級列表獲取服務器端參數值

  1. 首先,應用條件值,如果任何條件值對於給定的應用程序實例評估為true 。如果多個條件評估為true ,則 Firebase 控制台 UI 中顯示的第一個(頂部)優先,並在應用從後端獲取值時提供與該條件關聯的條件值。您可以通過在“條件”選項卡中拖放條件來更改條件的優先級。

  2. 如果沒有條件值為true條件值,則在應用從後端獲取值時提供服務器端默認值。如果後端中不存在某個參數,或者如果默認值設置為No value ,則當應用程序獲取值時不會為該參數提供任何值。

在您的應用中,參數值由get方法根據以下優先級列表返回

  1. 如果從後端獲取值然後激活,則應用程序使用獲取的值。激活的參數值是持久的。
  2. 如果沒有從後端獲取值,或者如果從遠程配置後端獲取的值尚未激活,則應用程序使用應用程序內默認值。
  3. 如果未設置應用內默認值,則應用使用靜態類型值(例如0表示intfalse表示boolean )。

此圖總結了遠程配置後端和您的應用程序中參數值的優先級:

參數組

遠程配置允許您將參數組合在一起,以獲得更有條理的 UI 和思維模型。

例如,假設您在推出新的登錄功能時需要啟用或禁用三種不同的身份驗證類型。使用遠程配置,您可以創建三個參數以根據需要啟用類型,然後將它們組織在名為“新登錄”的組中,無需添加前綴或特殊排序。

您可以使用 Firebase 控制台或遠程配置 REST API 創建參數組。您創建的每個參數組在您的遠程配置模板中都有一個唯一的名稱。創建參數組時,請記住:

  • 任何時候參數只能包含在一組中,並且參數鍵在所有參數中仍然必須是唯一的。
  • 參數組名稱限制為 256 個字符。
  • 如果您同時使用 REST API 和 Firebase 控制台,請確保更新任何 REST API 邏輯以處理髮佈時的參數組。

使用 Firebase 控制台創建或修改參數組

您可以在 Firebase 控制台的“參數”選項卡中對參數進行分組。要創建或修改組:

  1. 選擇管理組
  2. 選中要添加的參數的複選框,然後選擇Move to group
  3. 選擇現有組,或通過輸入名稱和描述並選擇創建新組創建新組。保存組後,即可使用“發布更改”按鈕進行發布

以編程方式創建組

遠程配置 REST API提供了一種創建和發布參數組的自動化方式。假設您熟悉 REST 並設置為授權對 API 的請求,您可以執行以下步驟以編程方式管理組:

  1. 檢索當前模板
  2. 添加 JSON 對象來表示您的參數組
  3. 使用 HTTP PUT 請求發布參數組。

parameterGroups對象包含組鍵、嵌套描述和分組參數列表。請注意,每個組密鑰必須是全局唯一的。

例如,以下是模板修訂的摘錄,該修訂添加了參數組“新菜單”和一個參數, 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 控制台支持以下規則類型。遠程配置 REST API 中提供了等效功能,如條件表達式參考 中所述

規則類型操作員筆記
應用程序==從與您的 Firebase 項目關聯的應用的應用 ID 列表中選擇。當您將應用添加到 Firebase 時,您需要輸入一個 iOS 包 ID 或 Android 包名稱,該名稱定義了在遠程配置規則中作為應用 ID公開的屬性。

使用此屬性如下:
  • 對於 iOS:使用應用程序的CFBundleIdentifier 。您可以在 Xcode 中應用的主要目標的常規選項卡中找到捆綁標識符
  • 對於 Android:使用應用程序的applicationId 。您可以在應用級build.gradle文件中找到applicationId
應用版本對於字符串值:
完全匹配,
包含,
不含,
正則表達式

對於數值:
=、≠、>、≥、<、≤

指定要定位的應用程序版本。

在使用此規則之前,您必須使用App ID規則來選擇與您的 Firebase 項目關聯的 Android/iOS 應用。

對於 iOS:使用應用程序的CFBundleShortVersionString

注意:請確保您的 iOS 應用使用 Firebase iOS SDK 6.24.0 或更高版本,因為 CFBundleShortVersionString 不會在早期版本中發送(請參閱發行說明)。

對於 Android:使用應用程序的versionName

此規則的字符串比較區分大小寫。使用完全匹配包含不包含正則表達式運算符時,您可以選擇多個值。

使用正則表達式運算符時,您可以創建RE2格式的正則表達式。您的正則表達式可以匹配全部或部分目標版本字符串。您還可以使用^$錨點來匹配目標字符串的開頭、結尾或整個字符串。

版本號對於字符串值:
完全匹配,
包含,
不含,
正則表達式

對於數值:
=、≠、>、≥、<、≤

指定要定位的應用程序版本。

在使用此規則之前,您必須使用App ID規則來選擇與您的 Firebase 項目關聯的 iOS 或 Android 應用。

此運算符僅適用於 iOS 和 Android 應用程序。它對應於應用程序的CFBundleVersion for iOS 和versionCode for Android。此規則的字符串比較區分大小寫。

使用完全匹配包含不包含正則表達式運算符時,您可以選擇多個值。

使用正則表達式運算符時,您可以創建RE2格式的正則表達式。您的正則表達式可以匹配全部或部分目標版本字符串。您還可以使用^$錨點來匹配目標字符串的開頭、結尾或整個字符串。

平台== IOS
安卓
網絡
操作系統==

指定要定位的操作系統。

在使用此規則之前,您必須使用App ID規則來選擇與您的 Firebase 項目關聯的Web 應用

如果操作系統及其版本與指定列表中的目標值匹配,則此規則對於給定的 Web 應用程序實例評估為true
瀏覽器==

指定要定位的瀏覽器。

在使用此規則之前,您必須使用App ID規則來選擇與您的 Firebase 項目關聯的Web 應用

如果瀏覽器及其版本與指定列表中的目標值匹配,則此規則對於給定的 Web 應用程序實例評估為true
約會時間<=, >指定的日期和時間,可以是設備時區,也可以是指定的時區,例如“(GMT+11) 悉尼時間”。將當前時間與設備獲取時間進行比較。
隨機百分位的用戶<=, > 0-100

使用此字段將更改應用於應用實例的隨機樣本(樣本大小小至 0.0001%),使用<=>運算符將用戶(應用實例)分組。

根據該項目中定義的,每個應用程序實例都被持久地映射到一個隨機整數或小數。除非您選擇或創建另一個密鑰,否則規則將使用默認密鑰(在 Firebase 控制台中顯示為DEF )。您可以通過清除使用此鍵值隨機化用戶字段來返回使用默認鍵值的規則。您可以跨規則使用單個鍵在給定百分比範圍內一致地處理相同的應用程序實例。或者,您可以通過創建新鍵為給定百分比範圍選擇一組新的隨機分配的應用程序實例。

例如,要創建兩個相關條件,每個條件都適用於不重疊的 5% 的應用用戶,您可以讓一個條件包含<= 5%規則,另一個條件包含> 5%規則和<= 10%規則。為了讓某些用戶可以隨機出現在兩個組中,請為每個條件中的規則使用不同的密鑰。

觀眾中的用戶==從您為項目設置的 Google Analytics 受眾列表中選擇一個或多個。

此規則需要應用 ID 規則來選擇與您的 Firebase 項目關聯的應用。

注意:由於許多 Analytics 受眾是由事件或用戶屬性定義的,這些屬性可以基於應用用戶的操作,因此用戶在受眾中的規則可能需要一些時間才能對給定的應用實例生效。

地區/國家的設備==選擇一個或多個地區或國家。如果給定的應用程序實例位於列出的任何區域或國家/地區,則此規則的計算結果為true 。設備國家/地區代碼是使用請求中設備的 IP 地址或 Firebase Analytics 確定的國家/地區代碼確定的(如果 Analytics 數據與 Firebase 共享)。
設備語言==選擇一種或多種語言。如果給定應用實例安裝在使用所列語言之一的設備上,則此規則的計算結果為true
用戶屬性對於字符串值:
包含,
不含,
完全匹配,
正則表達式

對於數值:
=、≠、>、≥、<、≤

注意:在客戶端上,您只能為用戶屬性設置字符串值。對於使用數字運算符的條件,遠程配置將相應用戶屬性的值轉換為整數/浮點數。
從可用的 Google Analytics 用戶屬性列表中進行選擇。要了解如何使用用戶屬性為用戶群的特定部分自定義應用程序,請參閱遠程配置和用戶屬性

要了解有關用戶屬性的更多信息,請參閱以下指南:

使用完全匹配包含不包含正則表達式運算符時,您可以選擇多個值。

使用正則表達式運算符時,您可以創建RE2格式的正則表達式。您的正則表達式可以匹配全部或部分目標版本字符串。您還可以使用^$錨點來匹配目標字符串的開頭、結尾或整個字符串。

注意:創建遠程配置條件時,自動收集的用戶屬性當前不可用。
進口段==選擇一個或多個導入的段。此規則需要設置自定義導入段

搜索參數和條件

您可以使用遠程配置參數選項卡頂部的搜索框從Firebase 控制台搜索項目的參數鍵、參數值和條件。

參數和條件的限制

在 Firebase 項目中,您最多可以有 2000 個參數和 500 個條件。參數鍵最長可達 256 個字符,必須以下劃線或英文字母字符(AZ、az)開頭,還可以包含數字。項目中參數值字符串的總長度不能超過 800,000 個字符。

下一步

要開始配置您的 Firebase 項目,請參閱設置 Firebase 遠程配置項目