다음 Provider 메소드를 사용하여 생성 된 FirebaseRemoteConfig 클래스의 싱글 톤 인스턴스를 사용하고 있습니다.FirebaseRemoteConfig 사용하기 우리가 실행할 때마다 setDefault 메소드가 캐시 된 Config 값을 마지막 페치에서 덮어 쓸 지 혼란 스럽습니다.
@Provides
@Singleton
FirebaseRemoteConfig provideFirebaseRemoteConfig() {
final FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
.setDeveloperModeEnabled(BuildConfig.DEBUG)
.build();
mFirebaseRemoteConfig.setConfigSettings(configSettings);
mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);
long cacheExpiration = 3600 * 3; // 3 hours in seconds.
if (mFirebaseRemoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled()) {
cacheExpiration = 0;
}
mFirebaseRemoteConfig.fetch(cacheExpiration)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
// Once the config is successfully fetched it must be activated before newly fetched
// values are returned.
mFirebaseRemoteConfig.activateFetched();
} else {
FirebaseCrash.log("RemoteConfig fetch failed at " +System.currentTimeMillis());
}
}
});
return mFirebaseRemoteConfig;
}
이제 여기서 문제는 그 나는 싱글 인스턴스를 생성하고있는 setdefaults를 방법 매번 설정하고 마지막 가져온 설정 값이 만료 시간이 있기 때문에, 그것은 구성 값을 되 돌리는 것을 의미하지 않는 경우 가져온 마지막 알려진 설정을 선택하는 대신 하드 코드 된 초기 기본값으로 설정합니다. 이는 마지막으로 가져온 Config 값이 만료 된 후 서버에서 가져올 수없는 경우입니다.
문서를 살펴 보았지만 간단한 개요를 제외하고는 전체 캐싱이 어떻게 작동하는지에 대해서는 구체적으로 자세히 설명하지 않았습니다. 따라서 RemoteConfig 사용 경험이있는 사람들은 쉽게 대답 할 수 있지만 처음 사용하면 도움이된다.