1. 程式人生 > >Android Firebase接入(六)-- Firebase遠端配置(Remote Config)

Android Firebase接入(六)-- Firebase遠端配置(Remote Config)

Firebase遠端配置就是在Firebase後臺儲存一些鍵值對,然後在app內向Firebase請求並使用這些鍵值對。當我們需要更改這些鍵值對時,就在Firebase後臺更改,當app下一次向Firebase請求時,獲取到的就是我們更改後的值。這樣就實現了動態更新app配置。

官方文件:https://firebase.google.com/docs/remote-config/android?authuser=0

一、配置Android應用並下載google-service.json檔案:

Firebase控制檯新建專案(需要使用Google賬戶登入),配置好Android應用後下載google-service.json檔案,將google-service.json檔案新增到專案的app目錄下即可。

(1)新增專案時填寫專案名稱、專案id使用預設的就可以、選擇國家、底部的兩個勾選項要麼都選,要麼都不選,表示是否和Google分享你的app分析資料,最後點選建立專案即可。

(2)Firebase的專案不止是為Android打造的,可以在專案中新增Android應用,IOS應用,網頁應用。那麼我們先要為這個專案新增一個Android應用:




選擇“將Firebase新增到您的安卓應用”,然後填寫app包名,app別名可以選填,除錯簽名證書SHA1,除錯簽名證書SHA1可以通過命令列獲取:

Mac環境:

keytool -exportcert -list -v \
-alias androiddebugkey -keystore ~/.android/debug.keystore


Windows環境:

keytool -exportcert -list -v \
-alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore


輸入命令列後需要輸入金鑰庫口令,預設的金鑰庫口令是android

獲取正式簽名證書SHA1的命令列:

keytool -exportcert -list -v \
-alias <your-key-name> -keystore <path-to-production-keystore>


在<your-key-name>填入金鑰名,<path-to-production-keystore>填入金鑰路徑,然後輸入金鑰庫口令即可獲取SHA1。

4.新增好Android應用後,下載google-service.json檔案,新增到專案的app目錄下

二、新增Remote Config依賴:

1.專案級的build.gradle中,新增:

classpath 'com.google.gms:google-services:4.0.1'



2.app模組下的build.gradle中,新增:

dependencies {
    ...
    implementation 'com.google.firebase:firebase-core:15.0.0'
    implementation 'com.google.firebase:firebase-config:15.0.0'
}
apply plugin: 'com.google.gms.google-services'

3.開啟Firebase控制檯,轉到Remote Config模組,點選新增您的首個引數:


4.輸入鍵值對,點選新增引數:


5.點擊發布更改並確認:


6.在MainActivity中:

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    private TextView text;
    private FirebaseRemoteConfig firebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = (TextView) findViewById(R.id.text);
        firebaseRemoteConfig.fetch()
                .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        firebaseRemoteConfig.activateFetched();
                        Log.d(TAG, "my_key: "+firebaseRemoteConfig.getString("my_key"));
                    }
                });
    }
}

可以看到Log控制檯輸出:

/com.simple.firebaseremoteconfig D/MainActivity: my_key: my_value

Firebase拉取遠端配置後,拉取的鍵值對預設在本地快取12小時,12小時後才去重新拉取。如果想要修改快取時間,在fetch中新增時間引數即可,使用firebaseRemoteConfig.fetch(0),遠端配置的值就會實時更新:

firebaseRemoteConfig.fetch(0)
        .addOnCompleteListener(this, new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                firebaseRemoteConfig.activateFetched();
                Log.d(TAG, "my_key: "+firebaseRemoteConfig.getString("my_key"));
            }
        });
我們來測試一下,在Firebase控制檯得RemoteConfig模組更改value值:


執行程式,在Log控制檯看到如下輸出:

/com.simple.firebaseremoteconfig D/MainActivity: my_key: my_value_changed

以上,就是Firebase Remote Config的基本使用。