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的基本使用。