gpt4 book ai didi

android - FirebaseRemoteConfig getString 返回空但远程配置的字节数组不为空

转载 作者:行者123 更新时间:2023-11-29 23:29:11 25 4
gpt4 key购买 nike

在第一张图片中,我停止了尝试从 FirebaseRemoteConfig 获取一些数据的应用程序。我评估的代码是从 FirebaseRemoteConfig 获取字符串的简单代码。但它返回空字符串。

然后在第二张图片中,我深入 FirebaseRemoteConfig 对象内部,发现 zzogi.zzogw.get("configns:firebase") 的散列映射具有我需要的内容。

为什么 remoteConfig.getString() 没有返回我的值,即使 remoteConfig 有值?

仅供引用,这是渐变线

implementation 'com.google.firebase:firebase-core:11.8.0'
implementation 'com.google.firebase:firebase-config:11.8.0'

这是我创建 FirebaseRemoteConfig 对象的代码。如果您需要更多代码,请询问。

public FirebaseRemoteConfig getFirebaseRemoteConfig(){
FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings settings = new FirebaseRemoteConfigSettings.Builder()
.setDeveloperModeEnabled(true)
.build();
config.setConfigSettings(settings);
return config;
}

enter image description here

enter image description here

最佳答案

您应该为所有配置参数添加默认值。您可以在 xml 文件夹中为默认值创建一个名为 config 的 xml 资源。

<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
<entry>
<key>foo</key>
<value>bar</value>
</entry>
<entry>
<key>some_key</key>
<value>true</value>
</entry>
<entry>
<key>another_key</key>
<value>2</value>
</entry>
</defaultsMap>

当您需要一个 FirebaseRemoteConfig 实例时,您不需要每次都设置配置和默认值。在主要 Activity 的 onCreate 方法中仅触发一次。

public void configureFirebaseRemoteConfigInstance(){
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
.setDeveloperModeEnabled(BuildConfig.DEBUG)
.build();
mFirebaseRemoteConfig.setConfigSettings(configSettings);
mFirebaseRemoteConfig.setDefaults(R.xml.config);
}

然后从服务器获取您的覆盖。您可以在 onResume 上触发它。它不会检查服务器,直到 cacheExpiration 超时。此外,当您处于开发模式时,cacheExpiration 将为 0。无需更改生产代码。

public void refreshConfigValuesIfNeeded() {
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
long cacheExpiration = 7200; //2 hour in seconds.
if (mFirebaseRemoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled()) {
cacheExpiration = 0;
}
mFirebaseRemoteConfig.fetch(cacheExpiration).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
FirebaseRemoteConfig.getInstance().activateFetched();
}
});
}

毕竟,您可以在需要的地方使用配置值:

FirebaseRemoteConfig.getInstance().getString("foo"); //Outputs bar
FirebaseRemoteConfig.getInstance().getBoolean("some_key"); //Outputs true
FirebaseRemoteConfig.getInstance().getLong("another_key"); // Outputs 2

关于android - FirebaseRemoteConfig getString 返回空但远程配置的字节数组不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52971807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com