我将Firebase Remote Config添加到应用程序,并且对.setMinimumFetchIntervalInSeconds(...)
和.setDeveloperModeEnabled(true/false)
的用途感到困惑。这些文档讨论的是开发人员模式,但我不确定他们是否清楚地解释了其实际功能。它必须与setMinimumFetchIntervalInSeconds
一起使用还是可以单独使用?如果单独使用,它会做什么?
第二,我在应用程序的调试版本中测试我的测试布尔值,其值设置为5分钟或小时,但仍然总是在3秒内得到我的值。当我将setDeveloperModeEnabled
设置为false或根本没有将FirebaseRemoteConfigSettings
添加到我的实例时,我仍然没有观察到著名的节流异常,并且立即获得了我的值。基本上看来,我的缓存设置已被忽略,并且我总是从后端获取新数据,并且可以将缓存设置为所需的低水平。
答案 0 :(得分:0)
setDeveloperModeEnabled()已过时。他们现在使用setMinimumFetchIntervalInSeconds()来设置缓存过期延迟。
检查此行的通讯座,并确保它是17.0.0版(截至今天)或更高版本: 实施'com.google.firebase:firebase-config:17.0.0'
Firebase对您可以进行的提取请求数量有一个配额。开发人员模式是一种使自己的设备可以随时获取而不受限制的方式,但是您不能在启用了开发人员模式的情况下发布您的应用程序(在该模式下,您仍然必须指定间隔)
如果您使用的是v17.0.0,请通过将cacheExpiration值更改为所需的值来使用此代码。
long cacheExpiration = 3600;
mFirebaseRemoteConfig.setConfigSettingsAsync(new FirebaseRemoteConfigSettings.Builder()
.setMinimumFetchIntervalInSeconds(cacheExpiration)
.build());
mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);
mFirebaseRemoteConfig.fetchAndActivate()
.addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
@Override
public void onComplete(@NonNull Task<Boolean> task) {
if (task.isSuccessful()) {
boolean updated = task.getResult();
Log.d(TAG, "Config params updated: " + updated);
Toast.makeText(MainActivity.this, "Fetch and activate succeeded " + updated,
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Fetch failed",
Toast.LENGTH_SHORT).show();
}
updateConfig();
}
});
setDeveloperModeEnabled不再受支持,这也许就是为什么您没有观察到其行为的任何变化