1. 簡介
上次更新時間:2021 年 3 月 9 日
什麼是 Firebase 遠端設定?
Firebase 遠端設定是一項雲端服務,可讓您變更應用程式的行為和外觀,不必要求使用者下載應用程式更新。使用遠端設定時,您可以建立應用程式內預設值來控制應用程式的行為和外觀。之後您可以使用 Firebase 控制台或遠端設定後端 API,覆寫所有應用程式使用者或特定使用者族群的應用程式內預設值。應用程式會控制套用更新的時間,且可以經常檢查更新並套用更新,幾乎不會對效能造成影響。
運作方式
遠端設定內含的用戶端程式庫可處理重要工作 (例如擷取參數值及快取這些工作),同時可讓您控制啟用新值的時機,以便對應用程式的使用者體驗造成影響。這可讓您控制變更時機的時間,保護應用程式的使用體驗。
遠端設定用戶端程式庫 get
方法提供參數值的單一存取點。應用程式使用取得應用程式內預設值的相同邏輯取得伺服器端值,因此您不必編寫大量程式碼,就能將遠端設定功能新增至應用程式。
如要覆寫應用程式內預設值,請透過 Firebase 控制台或遠端設定後端 API 建立參數,其名稱必須與應用程式中使用的參數相同。您可以設定每個參數的伺服器端預設值來覆寫應用程式內預設值,或是建立條件式值,以便為符合特定條件的應用程式執行個體覆寫應用程式內預設值。這張圖片顯示在遠端設定後端和應用程式中,參數值的優先順序:
課程內容
- 如何導入 Firebase 遠端設定
- 如何使用 Firebase 遠端設定在不更新應用程式的情況下變更值
軟硬體需求
- 最新版 Android Studio
- Firebase 帳戶
- (建議,但選用) 執行應用程式的實體 Android 裝置
- 對 Java 或 Kotlin 有基本瞭解
2. 開始設定
(選用) 下載程式碼範例
在本程式碼研究室中,您將建構自己的測試應用程式,但如果您想查看並執行現有的範例應用程式,可以下載快速入門導覽課程程式碼範例。
點選下方按鈕,即可下載這個程式碼研究室的所有程式碼:
將下載的 ZIP 檔案解壓縮。這會將根資料夾解壓縮,並命名為 quickstart-android-master
。
...或透過指令列複製 GitHub 存放區。
$ git clone https://github.com/firebase/quickstart-android.git
存放區包含多個資料夾我們將使用 config 資料夾。
(選用) 匯入程式碼範例
啟動 Android Studio,然後在歡迎畫面中選擇「Import project」。接著開啟下載的資料夾,然後選取 「config」資料夾。接著按一下「開啟」。
建立新的 Android 專案
- 在 Android Studio 中啟動新專案
- 選取基本活動
- 在「Configure Your Project」螢幕:
- 為專案命名,系統會自動為您產生套件名稱和「儲存位置」。
- 語言:Java
- 最低 SDK 16
3. 將 Firebase 和 Firebase Analytics 新增至您的 Android 專案
建立 Firebase 專案
您必須先建立要連結至 iOS 應用程式的 Firebase 專案,才能將 Firebase 加到您的 Android 應用程式。如要進一步瞭解 Firebase 專案,請參閱「瞭解 Firebase 專案」一文。
- 在 Firebase 控制台中,按一下「新增專案」,然後選取或輸入「專案名稱」。
如果您有現有的 Google Cloud Platform (GCP) 專案,可以從下拉式選單中選取該專案,將 Firebase 資源新增至該專案。
- (選用) 如要建立新專案,您可以編輯專案 ID。
Firebase 會自動為你的 Firebase 專案指派專屬 ID。請前往「瞭解 Firebase 專案」頁面,瞭解 Firebase 如何使用專案 ID。
- 按一下「繼續」。
- 為專案設定 Google Analytics,以便使用下列任一 Firebase 產品,享有最佳體驗:
- Firebase Crashlytics
- Firebase 預測
- Firebase 雲端通訊
- Firebase 應用程式內通訊
- Firebase 遠端設定
- Firebase A/B 測試
看到提示時,請選擇使用現有的 Google Analytics 帳戶或建立新帳戶。如果您選擇建立新帳戶,請選取 Analytics 報表位置,然後接受專案的資料共用設定和 Google Analytics 條款。
- 按一下「建立專案」。如果使用現有的 GCP 專案,請按一下「新增 Firebase」。
Firebase 會自動為你的 Firebase 專案佈建資源。程序完成後,系統就會將您帶往 Firebase 控制台中 Firebase 專案的總覽頁面。
向 Firebase 註冊應用程式
建立 Firebase 專案後,您可以在專案中新增 Android 應用程式。
如要進一步瞭解在 Firebase 專案中新增應用程式的最佳做法和注意事項,包括如何處理多個建構變數,請參閱「瞭解 Firebase 專案」一文。
- 前往 Firebase 主控台。
- 按一下「專案總覽」頁面頂端的「Android」圖示,啟動設定工作流程。已在 Firebase 專案中加入應用程式,點選「新增應用程式」即可顯示平台選項。
- 在「Android package name」欄位中,輸入應用程式的套件名稱。
- (選用) 輸入應用程式暱稱。
- 將「SHA-1」欄位留空,因為這項專案不需要 SHA-1。
- 按一下 [Register app] (註冊應用程式)。
新增 Firebase 設定檔
接下來,系統會提示您下載設定檔,其中包含應用程式的所有必要 Firebase 中繼資料。點選「Download google-services.json」取得 Firebase Android 設定檔 (google-services.json
)。
在專案層級的 Gradle 檔案 (build.gradle
) 中新增規則,納入 Google 服務 Gradle 外掛程式。請一併確認您有 Google 的 Maven 存放區。
專案層級 build.gradle (<project>/build.gradle
):
buildscript {
repositories {
// Check that you have the following line (if not, add it):
google() // Google's Maven repository
}
dependencies {
// ...
// Add the following line:
classpath 'com.google.gms:google-services:4.3.5' // Google Services plugin
}
}
allprojects {
// ...
repositories {
// Check that you have the following line (if not, add it):
google() // Google's Maven repository
// ...
}
}
在模組 (應用程式層級) Gradle 檔案 (通常是 app/build.gradle
) 中,套用 Google 服務 Gradle 外掛程式:
應用程式層級 build.gradle (<project>/<app-module>/build.gradle
):
套用外掛程式:「com.android.application」
// 加入以下這行程式碼:
apply plugin: 'com.google.gms.google-services'// Google 服務外掛程式
android {
// ...
}
將 Firebase SDK 加入您的 Android 應用程式
使用遠端設定時,必須使用 Google Analytics,才能條件式指定應用程式執行個體給使用者屬性和目標對象。確認您已在專案中啟用 Google Analytics。
(已在快速入門導覽課程程式碼中完成這項操作)
使用 Firebase Android BoM,在模組 (應用程式層級) Gradle 檔案 (通常為 app/build.gradle
) 中宣告遠端設定 Android 程式庫的依附元件。透過 Firebase Android BoM,應用程式一律會使用相容的 Firebase Android 程式庫版本。
此外,設定 Analytics 時,您必須將 Google Analytics 專用 Firebase SDK 新增至應用程式。在依附元件下方,新增下列程式碼:
app/build.gradle
dependencies {
// Import the BoM for the Firebase platform
implementation platform('com.google.firebase:firebase-bom:26.6.0')
// Declare the dependencies for the Remote Config and Analytics libraries
// When using the BoM, you don't specify versions in Firebase library dependencies
implementation 'com.google.firebase:firebase-config'
implementation 'com.google.firebase:firebase-analytics'
}
將專案與 Gradle 檔案同步處理
為確保您的應用程式可使用所有依附元件,請依序選取「File」>「File」> 將專案與 Gradle 檔案同步處理將專案與 Gradle 檔案同步處理。
4. 查看遠端設定的主要元件
接下來,我們將探討在應用程式中使用遠端設定的步驟。您在快速入門程式碼研究室程式碼中已完成這些步驟。查看快速入門導覽課程程式碼研究室的程式碼時,請參考本節說明,瞭解具體情況。
1. 取得遠端設定 Singleton 物件
取得遠端設定物件執行個體,並設定最短擷取間隔,允許經常重新整理:
MainActivity.java
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
.setMinimumFetchIntervalInSeconds(3600)
.build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
單例模式物件的用途是儲存應用程式內的預設參數值、從後端擷取更新後的參數值,以及控管擷取後何時提供給應用程式的值。
在開發期間,建議您設定相對較低的擷取間隔下限。詳情請參閱節流。
2. 設定應用程式內預設參數值
您可以在遠端設定物件中設定應用程式內預設參數值,讓應用程式在連線至遠端設定後端之前能正常運作。這樣一來,如果後端未設定任何預設值,系統就會提供預設值。
您可以使用儲存在應用程式 res/xml
資料夾中的 Map 物件或 XML 資源檔案,定義一組參數名稱和預設參數值。遠端設定快速入門導覽課程範例應用程式會使用 XML 檔案來定義預設參數名稱和值。建立自己的 XML 檔案的方法如下:
- 在
res
資料夾下建立xml
資料夾。
- 在新建立的
xml
資料夾上按一下滑鼠右鍵,然後建立檔案。
- 設定預設值。在下一節中,您將嘗試變更遠端設定快速入門導覽課程 XML 檔案中的預設值。
- 使用 setDefaultsAsync(int) 將這些值新增至遠端設定物件,如下所示:
MainActivity.java
mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
3. 取得要用於應用程式的參數值
您現在可以從遠端設定物件取得參數值。如果您在後端設定值、擷取這些值,然後加以啟用,應用程式就能使用這些值。否則,您可以使用 setDefaultsAsync(int) 設定應用程式內參數值。如要取得這些值,請呼叫下列對應至應用程式預期資料類型的方法,並提供參數鍵做為引數:
4. 擷取並啟用值
- 如要從遠端設定後端擷取參數值,請呼叫 fetch() 方法。您在後端設定的任何值都會經過擷取,並儲存在遠端設定物件中。
- 如要讓應用程式使用擷取的參數值,請呼叫 activate() 方法。如果您想在單一呼叫中擷取及啟用值,可以使用 extractAndActivate() 要求,從遠端設定後端擷取值並提供給應用程式:
MainActivity.java
mFirebaseRemoteConfig.fetchAndActivate()
.addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
@Override
public void onComplete(@NonNull Task<Boolean> task) {
if (task.isSuccessful()) {
boolean updated = task.getResult();
Log.d(TAG, "Config params updated: " + updated);
Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Fetch failed",
Toast.LENGTH_SHORT).show();
}
displayWelcomeMessage();
}
});
這些更新過的參數值會影響應用程式的行為和外觀,因此建議您一次啟用擷取的值,確保使用者享有順暢的體驗,例如下次開啟應用程式時。如需詳細資訊和範例,請參閱遠端設定載入策略。
節流
如果應用程式在短時間內擷取太多次,系統會限制擷取呼叫,且 SDK 會傳回 FirebaseRemoteConfigFetchThrottledException
。在 SDK 17.0.0 版之前,最多只能在 60 分鐘內發出 5 個擷取要求 (較新的版本則有較寬的限制)。
在應用程式開發期間,建議您頻繁 (每小時多次) 擷取並啟用設定,以便在開發及測試應用程式時迅速疊代。如要因應最多有 10 名開發人員的專案快速疊代,您可以在應用程式中暫時設定 FirebaseRemoteConfigSettings
物件,將擷取間隔下限 (setMinimumFetchIntervalInSeconds
) 設為較低的值。
遠端設定的預設擷取間隔時間下限為 12 小時,這表示無論實際發出多少擷取呼叫,系統都不會在 12 小時內多次從後端擷取設定。具體來說,最小擷取間隔依下列順序決定:
fetch(long)
中的參數FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
中的參數- 預設值是 12 小時
如要將最短擷取間隔設為自訂值,請使用 FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)。
5. 透過遠端設定變更應用程式行為
變更應用程式內的預設參數
開啟 res/xml/remote_config_defaults.xml
,然後將預設值改為其他值。
res/xml/remote_config_defaults.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- START xml_defaults -->
<defaultsMap>
<entry>
<key>loading_phrase</key>
<value>Fetching config...</value>
</entry>
<entry>
<key>welcome_message_caps</key>
<value>false</value>
</entry>
<entry>
<key>welcome_message</key>
<value>Welcome to my awesome app!</value>
</entry>
</defaultsMap>
<!-- END xml_defaults -->
驗證應用程式內預設值變更
- 在模擬器中執行專案,或使用測試裝置確認行為。
- 在 Java 或 Kotlin 版本中,按一下「Open」。
- 查看主要檢視畫面的歡迎訊息。
在遠端設定後端設定參數值
現在來測試透過遠端設定傳送值吧。您可以使用 Firebase 控制台或 Remote Config 後端 API 建立新的伺服器端預設值,根據所需的條件邏輯或使用者指定目標覆寫應用程式內值。本節說明建立這些值的 Firebase 控制台步驟。
- 開啟 Firebase 控制台,開啟所需專案。
- 在「Engage」專區中,從左側選單中選取「Remote Config」,即可查看遠端設定資訊主頁。
- 在「Add a parameters」(新增參數) 下方,輸入
Parameter key.
在Default value
下方輸入所需文字。然後按一下「新增參數」。在本程式碼研究室中,我們會使用res/xml/remote_config_defaults.xml
檔案中的參數鍵。詳情請參閱下表:
參數金鑰 | 預設值 ( | 說明 |
loading_phrase | 正在擷取設定... | String;擷取遠端設定值時顯示。 |
welcome_message_caps | false | 布林值;如為 true,則將 Welcome_message 變更為所有大寫 |
welcome_message | 歡迎使用我的超棒應用程式! | String;歡迎訊息 |
螢幕截圖範例:
- 參數新增完畢後,按一下 [發布變更]。
- 再次在模擬器或裝置上執行應用程式,然後按一下「Fetch Remote Welcome」按鈕。
- 系統會根據您的遠端設定參數和值更新歡迎訊息!
6. 恭喜
恭喜,您已成功使用遠端設定變更歡迎訊息!遠端設定功能提供更多變更及自訂應用程式的方式。請參閱下列其他資源: