问题描述
我的定义如下:
我首先使用设备的语言(从“设置”)设置为英语启动应用程序,然后加载lang-EN json。
如果我进入设备的“设置”,将语言更改为法语并重新启动应用程序,.fetch()
仍将返回lang-EN值。如果我清除了该应用程序的缓存并重新启动,则它将加载lang-FR值。
.fetch()
是否不获取所有远程配置参数并在本地决定向用户显示哪个?从功能上看,似乎.fetch()
仅在调用时获得仅与设备有关的参数值。要么在Firebase代码中存在错误……要么……我希望情况确实如此,我做错了事。
这是我初始化单例的方式。也许我想念什么?
public void initialize(Context applicationContext) {
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
.setMinimumFetchIntervalInSeconds(5 * 60 * 60)//5 hours
.build();
getConfig().setConfigSettingsAsync(configSettings);
}
是的,我在依赖项19.2.0
中具有远程配置sdk的最新版本
解决方法
fetch()
是不够的。
要从Remote Config后端获取参数值,请调用fetch()
方法。您在后端设置的任何值都将被提取并存储在Remote Config对象中。
要使获取的参数值可用于您的应用,请调用activate()
方法。
对于要在一次调用中获取和激活值的情况,可以使用fetchAndActivate()
请求从Remote Config后端获取值并将其提供给应用程序:
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();
}
});
由于这些更新的参数值会影响应用程序的行为和外观,因此应在确保用户流畅体验的同时(例如,用户下次打开应用程序时)激活获取的值