Firebase 远程配置:只调用一次

Firebase Remote Config: called only once time

我已经实现了 Firebase 文档中的基本代码:

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
        FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
                .setMinimumFetchIntervalInSeconds(20)
                .build();
        mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

        mFirebaseRemoteConfig.fetchAndActivate()
                .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
                    @Override
                    public void onComplete(@NonNull Task<Boolean> task) {
                        if (task.isSuccessful()) {
                            boolean updated = task.getResult();
                            LogUtils.LOGD("XXXXX", "firebase remote config fetch OK");
                            treatRemoteConfigValues();

                        } else {
                            LogUtils.LOGD("XXXXX", "firebase remote config fetch failed!!!!");
                        }
                    }
                });

这个回调只调用一次(在第一次初始化时),我不明白为什么这个回调不是每20秒调用一次。我尝试从 Firebase 配置界面更新值,也没有任何反应。

谢谢大家的帮助!

您似乎误解了 setMinimumFetchIntervalInSeconds(20) 的实际含义。它 而不是 意味着 SDK 会自动为您刷新这些值。根据 API documentation:

Sets the minimum interval between successive fetch calls.

Fetches less than duration seconds after the last fetch from the Firebase Remote Config server would use values returned during the last fetch.

这意味着:当您调用 fetch() 时,SDK 将在自上次成功提取后的指定时间后才会真正提取新值。该限制有助于防止您的代码通过重复请求 "spamming" Remote Config,无论是有意还是无意。 Remote Config 还将强制执行服务器端速率限制,以保护自己免受错误代码的影响。

如果您需要对服务器上的某些值进行更多实时更新,请考虑改用实时数据库或 Firebase,这样您就可以建立侦听器,以便在某些值发生变化时立即得到反馈。当然,您将无法使用远程配置的强大配置。