当前位置: 首页 > 知识库问答 >
问题:

Firebase远程配置:无法读取任何值,但fetch成功

佘单鹗
2023-03-14

我正在尝试使用Firebase的新远程配置特性来拥有一个远程配置参数,但我遇到了一个问题。

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

final FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance();
remoteConfig.fetch().addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        if (task.isSuccessful()) {
            remoteConfig.activateFetched();
        }
    }
});

我是这样解读的:

FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance();
String value = remoteConfig.getString("active_subscriptions");

共有1个答案

华锦程
2023-03-14

找到解决方案!见下文

我遇到了“静默完成”的事情--我调用“提取”,但onComplete、onSuccess或onFailure监听器从不触发。我尝试将其移动到Create上的一个活动中,但仍然没有发生任何事情,因此,配置项从未从服务器加载。我已经启用了开发人员模式,并且正在调用缓存值为0的fetch。

我(有一次)在行“public void onComplete(@nonnull Task Task){”上设置了一个断点,它被击中了,然后我能够执行该操作,并且onComplete被激发。然后我无法以任何其他方式再现相同的结果,包括(我想)第二次执行相同的操作。

这似乎是一个计时或并发问题,但这没有什么意义,因为这是一个异步调用。

变通办法

如果您从活动#onResume(或者,我想是从活动#onStart)中提取,那么它工作得很好。从activity#onCreate或application#onCreate中调用fetch会导致一个似乎从未得到处理的调用,事实上,在fetch开始后,应用程序的性能明显下降,所以我认为有一个looper在运行或其他什么。*

如果您真的希望它从应用程序#onCreate运行(我就是这样做的),那么这似乎也是可行的:

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        // Run mFirebaseRemoteConfig.fetch(timeout) here, and it works
    }
}, 0);
 类似资料:
  • 我正在尝试设置Firebase远程配置。在我的项目中一个重要的部分是正确的定位。所以我在Console中设置了不同语言的条件。但现在我想将默认值设为XML。github上的示例非常简单。没有任何条件的值就很少。文档根本没有描述这种格式。所以我想知道是否可以在defaults.xml中指定我的所有本地化,以及我如何做到这一点。

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

  • Firebase控制台支持配置远程配置参数的简单方法。 在我们的应用程序中,每个用户都有不同的远程配置,这些配置是在我们自己的门户网站上设置的。 有什么API可以让我把配置从我自己的门户推到Firebase远程配置服务器,然后在android应用程序上使用远程配置库来获得新的配置吗?

  • Firebase远程配置有其他选择吗?我需要为中国市场提供一个应用程序,我不确定它是否会起作用

  • 我正在尝试设置一个SpringCloudConfig服务器,它使用SSH密钥从GitRepo获取配置。它使用SpringBootVersion2.1运行。0.0版本和springCloudVersion格林威治。M3。 当在下面的配置中使用带有用户名和密码的https bitbucket URI时,配置服务工作正常,没有问题: 但我们必须迁移到使用ssh密钥,而不是使用以下配置的用户名和密码: i