首先,我停止了尝试从FirebaseRemoteConfig获取一些数据的应用程序。我评估的代码是从FirebaseRemoteConfig获取字符串的简单代码。但是它返回空字符串。
然后在第二张图片中,我深入了FirebaseRemoteConfig对象,发现zzogi.zzogw.get(“ configns:firebase”)的哈希图具有我所需要的。
为什么即使remoteConfig具有值,remoteConfig.getString()也不返回我的值?
仅供参考,这是gradle线
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;
}
最佳答案
您应该为所有配置参数添加默认值。您可以在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实例时设置config和默认值。在您的主要活动的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/