【问题标题】:My Android app is not getting FirebaseRemoteConfig updated vales every time我的 Android 应用程序每次都没有更新 FirebaseRemoteConfig
【发布时间】:2016-09-19 11:12:42
【问题描述】:

我正在开发一个使用 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() does not trigger OnCompleteListener every time。并按照该链接中的建议实现了代码。

所以我实现了代码以务实地清除我的应用缓存。每次在获取 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;
    }
}  

请指导我正确的方法以 100% 的时间获取更新的 Remoteconfig 值。先感谢您。任何建议表示赞赏。

【问题讨论】:

  • setDefaults(xml) 设置为在您缺少的故障条件下具有默认值是一个好习惯!还要确保您在 Firebase 远程配置控制台中更改值并保存更改!我遇到了同样的问题,我没有正确保存它!
  • 您好,Lalit Poptani,感谢您的指导。实际上,在我的情况下,我使用默认值来显示是否未获取 Remoteconfig 的最新值(即 coverageAreaString = "default area";)。每次我更新 Remoteconfig 中的值时,我总是在执行“PUBLISH CHANGES”操作。但值仍然没有更新。
  • 这个问题解决了吗?我碰巧也有这个问题,它在获取远程配置时不可靠..有时只能在新构建后工作......我正在 iOS 上实现..
  • 是的@John。当我在请求远程配置值之前强制清除缓存时,它工作得非常好。

标签: android firebase firebase-remote-config


【解决方案1】:

首先你必须在调用 fetch 和 activate 之前设置最小 Fetch Interval

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
int interval = 3600 
FirebaseRemoteConfigSettings configSettings = 
       new FirebaseRemoteConfigSettings.Builder()
              .setMinimumFetchIntervalInSeconds(interval)
              .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多