Firebase 远程配置 - 初始获取返回本地默认值

Leg*_*egZ 7 android firebase firebase-remote-config

我正在使用 Firebase 远程配置来获取远程数据,而我的应用程序需要第一次启动时的最新数据。

我正在我的应用程序中进行获取和更新onCreate()

mFirebaseRemoteConfig.fetch(cacheExpiration)
    .addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if (task.isSuccessful()) {
                mFirebaseRemoteConfig.activateFetched();
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

并读取值:

myValue = mFirebaseRemoteConfig.getBoolean(Constants.FIREBASE_REMOTE_MY_VALUE);
Run Code Online (Sandbox Code Playgroud)
  1. 第一次 fetch 运行良好(activateFetched()已成功触发),但它返回remote_config_defaults值而不是已发布的远程配置。
  2. 第二次获取,即使是几秒钟后,也会返回远程值。
  3. 之后,接下来的获取受 cacheExpiration 规则的约束(完全可以)。

知道为什么在第一次调用时没有获取我的远程值吗?

Bob*_*der 7

听起来您忽略了获取远程参数的异步性质。的onComplete()到火力地堡服务器的请求之后回调火灾被发送和接收的答复。这将需要几分之一秒,也许更多。

如果您的语句使用获取的值:

myValue = mFirebaseRemoteConfig.getBoolean(Constants.FIREBASE_REMOTE_MY_VALUE);
Run Code Online (Sandbox Code Playgroud)

如下调用fetch(),而不是在onComplete()回调中,配置数据被接收之前它将执行。第二个调用似乎只工作,因为第一个调用已经过去了足够的时间来完成并且它获取和激活的数据存在。