Firebase远程配置未在区域设置更改时更新

问题描述

我的定义如下:

enter image description here

我首先使用设备的语言(从“设置”)设置为英语启动应用程序,然后加载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();
            }
        });

由于这些更新的参数值会影响应用程序的行为和外观,因此应在确保用户流畅体验的同时(例如,用户下次打开应用程序时)激活获取的值