0

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% 更新する正しい方法を教えてください。前もって感謝します。どんな提案でも大歓迎です。

4

1 に答える 1