Firebase RemoteConfig 機能を使用する Android アプリを開発しています。そして、私のコードは
protected void onPostResume() {
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
.setDeveloperModeEnabled(BuildConfig.DEBUG)
.build();
mFirebaseRemoteConfig.setConfigSettings(configSettings);
long cacheExpiration = 0; // 1 hour in seconds 3600.
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()) {
mFirebaseRemoteConfig.activateFetched();
} else {
//Fetch failed
}
displayLatestConfigValues();
}
});
super.onPostResume();
}
private void displayLatestConfigValues() {
String coverageAreaString;
if(mFirebaseRemoteConfig.getBoolean(COVERAGE_AREA_CONFIG_MASTER_KEY))
{
coverageAreaString = mFirebaseRemoteConfig.getString(COVERAGE_AREA_CONFIG_KEY);
} else {
coverageAreaString = "default area";
}
printCoverageArea(coverageAreaString);
}
しかし、FCM コンソールでそれぞれの Remoteconfig 値を更新すると、アプリに反映されません。
このFirebaseRemoteConfig.fetch() が毎回 OnCompleteListener をトリガーしない ということも参照しました。そのリンクで提案されているようにコードを実装しました。
そこで、実用的にアプリのキャッシュをクリアするコードを実装しました。Remoteconfig の値を取得する前に、毎回このコードを使用してアプリのキャッシュをクリアしています。これは、いくつかの反復でうまくいきました。しかし、今でも更新された Remoteconfig 値を取得するためにこれが機能していません。私のコードはリンクです
public static void deleteCache(Context context) {
try {
File dir = context.getCacheDir();
deleteDir(dir);
} catch (Exception e) {}
}
public static boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
return dir.delete();
} else if(dir!= null && dir.isFile()) {
return dir.delete();
} else {
return false;
}
}
Remoteconfig の値を常に 100% 更新する正しい方法を教えてください。前もって感謝します。どんな提案でも大歓迎です。