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

标签 android firebase firebase-remote-config

我正在使用 Firebase Remote Config 来获取远程数据,我的应用需要从第一次启动时获得最新数据。

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

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

并读取值:

myValue = mFirebaseRemoteConfig.getBoolean(Constants.FIREBASE_REMOTE_MY_VALUE);
  1. 第一次提取工作正常(activateFetched() 成功触发),但它返回 remote_config_defaults 值而不是发布的远程配置。
  2. 第二次获取,甚至在几秒后,返回远程值。
  3. 之后,以下提取将受制于 cacheExpiration 规则(完全可以)。

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

最佳答案

听起来您忽略了获取远程参数的异步性质。 onComplete() 回调在向 Firebase 服务器发送请求并收到回复后触发。这将花费几分之一秒,甚至更多。

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

myValue = mFirebaseRemoteConfig.getBoolean(Constants.FIREBASE_REMOTE_MY_VALUE);

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

关于android - Firebase 远程配置 - 初始提取返回本地默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42328144/

相关文章:

java - Firebase 用户通过 Google 注册

android - Gradle 同步时间太长 Firebase-core 无法 HEAD 状态代码 409

android - 无法使用 firebase-config :16. 0.0 和 firebase-core :16. 0.1 构建

android - Firebase 部署不断给我一个错误 : Parse Error in remoteconfig. template.json

swift - 在我的 iPhone 上没有收到推送通知,但 Firebase Functions 说它已成功发送?

java - 如何在多个包 ID(同一项目)Android 中使用 Firebase 远程配置

android - 原生 ActionBar 到 ActionBarSherlock 的迁移

android - 在 onPostExecute 中启动一个 Activity

android - 在 Mac 上的真实设备上测试 Android 项目时,我的 URL localHost 是什么?

android - 可以举报或删除来自 Android Play 的评论吗?