9

我正在使用 Firebase 远程配置在应用首次打开时获取数据。但问题是我无法在应用程序第一次启动时获取数据。onComplete()方法触发但不返回值。如果我关闭应用程序并再次运行,它会从远程配置返回值。

尝试在 , , 中调用 fetch() onCreate()onStart()onResume()了它第二次延迟,postDelay()但仍然相同,初始 fetch 始终为空。我知道,远程配置具有setDefaults()在获取默认值之前存储默认值的方法,但是在应用程序中设置默认值并不是我想要的。

这是远程配置的工作方式还是我做错了什么?我发现的唯一解决方法是添加fetch()insideonResume()并再次调用 onResume() inside onCreate()。结果调用 onResume() 两次。第一次通过Android系统,第二次通过代码。

还有其他方法可以强制远程配置在第一次运行时获取数据吗?

更新

首先onComplete(),我必须先调用firebaseRemoteConfig.activateFetched();它,然后才能从中获取新值。

4

4 回答 4

5
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
        FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder().build();
        mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings)
                .addOnCompleteListener(task -> mFirebaseRemoteConfig.fetchAndActivate()
                        .addOnCompleteListener(activity, task1 {
                       // now cache is updated you can fetch values
                       String value = mFirebaseRemoteConfig.getString("key");
               }));

配置设置完成后开始获取值

只需在应用启动时执行此操作,然后直接在其他任何地方获取值(例如 mFirebaseRemoteConfig.getString("key");:)

于 2019-10-16T08:40:17.730 回答
2

检查几点:

在 Firebase 仪表板中创建新变量后,将其发布

将缓存时间设置为 0 的 fetch

FirebaseRemoteConfig.getInstance().fetch(0).
于 2019-02-23T19:11:24.003 回答
0

感谢Pankaj kumar的回答,我设置firebase.remoteConfig().settings.minimumFetchIntervalMillis = 0并工作了

于 2021-01-26T14:18:36.813 回答
0

我知道这是一个老问题 - 但我遇到了与提问者完全相同的问题。在调查了几天后,我找到了答案,因此我将其发布在这里以帮助其他有困难的人。

首先要检查的是您的配置设置是否已在 Firebase 中发布。进行更改后,控制台右上角有一个发布按钮。

我遵循了许多关于如何在 Unity 中配置 FireBases 远程配置的教程和指南,但尽管调用了 ActivateFetched,但我没有得到任何结果。在投入大量精力试图弄清楚为什么没有返回数据后,我偶然发现了这个线程:https ://github.com/firebase/quickstart-unity/issues/9

事实证明 RemoteConfig 在 Unity 中不起作用,只会使用默认值。要实际使用远程配置,您必须进行构建并将其部署到目标设备上。

在我的 Android 设备上,我的所有远程配置都已成功检索

于 2018-04-23T17:51:08.023 回答