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