android FirebaseRemoteConfig fetchAndActivate不更新新值

hjzp0vay  于 2024-01-04  发布在  Android
关注(0)|答案(6)|浏览(155)

我已经设置了最小间隔为0时,在关机模式。目前我做什么来获取新的数据是通过清除应用程序存储第一次启动应用程序之前。
下面是我的代码:

  1. private fun initRemoteConfig() {
  2. remoteConfig = FirebaseRemoteConfig.getInstance()
  3. configSettings = FirebaseRemoteConfigSettings.Builder()
  4. .setMinimumFetchIntervalInSeconds(if (BuildConfig.DEBUG) 0 else 3600)
  5. .build()
  6. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
  7. fetch()
  8. }
  9. private fun fetch() {
  10. remoteConfig.fetchAndActivate()
  11. .addOnCompleteListener {
  12. if (it.isSuccessful) {
  13. val updated = it.result
  14. Logger.d(TAG, "Config params updated: $updated. Fetch and activate succeeded") // updated = false
  15. checkVersion()
  16. } else {
  17. Logger.d(TAG, "Fetch failed")
  18. }
  19. }
  20. }

字符串

pgpifvop

pgpifvop1#

试试这个

  1. private fun initRemoteConfig() {
  2. remoteConfig = FirebaseRemoteConfig.getInstance()
  3. configSettings = FirebaseRemoteConfigSettings.Builder()
  4. .setMinimumFetchIntervalInSeconds(if (BuildConfig.DEBUG) 0 else 3600)
  5. .build()
  6. remoteConfig.setConfigSettingsAsync(configSettings) //You missed this line
  7. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
  8. fetch()
  9. }
  10. private fun fetch() {
  11. remoteConfig.fetchAndActivate()
  12. .addOnCompleteListener(this) { task ->
  13. if (task.isSuccessful) {
  14. val updated = task.result
  15. Logger.d(TAG, "Config params updated: $updated. Fetch and activate succeeded") // updated = false
  16. checkVersion()
  17. } else {
  18. Logger.d(TAG, "Fetch failed")
  19. }
  20. }
  21. }

字符串

展开查看全部
vuktfyat

vuktfyat2#

我将尝试阐明为什么用fetchactivate替换fetchAndActivate可以工作。
原因是fetchAndActivate函数后面的远程配置缓存。它缓存新数据一段时间。该时间默认为-1,可能意味着永远(不确定,但可能意味着1天,或沿着这些行的沿着)。
当数据已经被缓存时,它甚至不会再次尝试获取它们。因此,看起来好像它不工作。当你调用fetch(0)时,它将缓存时间设置为0秒。
这就是为什么它每次都会获取新的远程配置值的原因。

ycggw6v2

ycggw6v23#

我将代码从fetchAndActivate更改为fetch,它似乎按预期工作。我现在正在从Firebase获取新数据。
下面是我更新的代码:

  1. private fun fetch() {
  2. val fetch = remoteConfig.fetch(if (BuildConfig.DEBUG) 0 else TimeUnit.HOURS.toSeconds(12))
  3. fetch.addOnCompleteListener {
  4. if (it.isSuccessful) {
  5. remoteConfig.activate()
  6. Logger.d(TAG, "Fetch and activate succeeded")
  7. checkVersion()
  8. } else {
  9. Logger.d(TAG, "Fetch failed")
  10. }
  11. }
  12. }

字符串

展开查看全部
h4cxqtbf

h4cxqtbf4#

在开发的早期阶段,有一种方法可以用来测试。它对我很有效。如果你参考下面的代码和Google Doc,会很有帮助。
您可以通过“remoteConfig.lastFetchTime”估计与服务器通信的时间。

  1. final remoteConfig = FirebaseRemoteConfig.instance;
  2. await remoteConfig.setConfigSettings(RemoteConfigSettings(
  3. fetchTimeout: const Duration(minutes: 1),
  4. minimumFetchInterval: const Duration(minutes: 5),
  5. ));

字符串
在应用开发过程中,如果您没有使用实时远程配置(我们建议您使用),您可能希望非常频繁地(每小时多次)获取和激活远程配置,以便在开发和测试应用时快速执行远程配置。为了适应最多10个开发人员的项目的快速迭代,您可以使用setConfigSettings()临时设置较低的最小获取间隔。
网址:https://firebase.google.com/docs/remote-config/get-started?platform=flutter#fetch-values

ekqde3dh

ekqde3dh5#

默认远程更新为43200000毫秒,即720分钟或12小时。建议使用默认值。
如果你想调试或使用一个新的值,你可以设置

  1. remoteConfig.settings.minimumFetchIntervalMillis = 5000

字符串
重新启动您的应用,然后将其删除

zu0ti5jz

zu0ti5jz6#

在我的例子中,我在fetchAndActivate之前调用onConfigUpdated函数解决了这个问题,正如文档在第7步中所建议的那样:

  1. await remoteConfig.fetchAndActivate();
  2. remoteConfig.onConfigUpdated.listen((event) async {
  3. print('### Remote Config Updated');
  4. await remoteConfig.activate();
  5. });

字符串
希望能帮到别人:)

相关问题