Вы должны добавить значения по умолчанию для всех ваших параметров конфигурации.Вы можете создать ресурс 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>
Вам не нужно устанавливать config и значения по умолчанию каждый раз, когда вам нужен экземпляр FirebaseRemoteConfig.Запустите это только один раз в методе 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