【问题标题】:Refresh Firebase iOS SDK cache immediately立即刷新 Firebase iOS SDK 缓存
【发布时间】:2016-04-28 09:28:18
【问题描述】:

有没有办法使用 iOS SDK 手动立即刷新 Firebase 缓存以提取最新数据(假设您在线)?例如,如果我对 Firebase 上的数据进行了一些更改,我希望我的应用立即反映这一点,但在启用持久性的情况下,通常需要重新启动几次应用。

我最近在我的应用中打开了持久性,如下所示:

Firebase.defaultConfig().persistenceEnabled = true

效果很好,但现在我的应用程序即使有互联网连接也不会经常刷新它的数据。我正在使用here 提到的离线功能。

【问题讨论】:

  • "打开持久性,通常需要重新启动应用程序" 这不应该发生,除非您使用observeSingleEventOfType。由于observeSingleEventOfType 将立即为缓存版本触发,因此它永远不会获得新版本。解决方案是不要同时使用observeSingleEventOfTypepersistenceEnabled = true
  • 为确保缓存自动更新,请致电[ref keepSynced: YES];firebase.com/docs/ios/guide/…
  • 所以根据你的第一条评论,如果我使用observeSingleEventOfType,即使keepSynced 也不起作用?
  • 如果我没记错的话,这是 Google 收购 Firebase 时的 FIRDatabase.database().persistenceEnabled = true
  • 现在在 Swift 3 中,实际上是 Database.database().isPersistenceEnabled = true :)

标签: ios swift caching firebase


【解决方案1】:

我在持久性方面遇到了同样的问题,这里有两个解决方案:

1) 继续使用observeSingleEventOfType,但设置ref.keepSynced(true)。这不会监听数据中发生的变化,但会在执行此代码后刷新数据。我为我的常见问题部分选择了这个选项,它只需要在屏幕打开时更新一次 (viewDidLoad)。

2) 使用observeEventOfType。这将始终使您的数据保持同步,并在您的数据更改后立即再次执行。

【讨论】:

  • 这在我的 iPhone 7+ 上运行良好,但在我的 iPhone 5s 上却不行,但在运行 iOS 10... 什么可能是在 iPhone 5s 上无法运行的原因?不工作意味着缺少“立即”响应,但始终进行服务器调用
  • 非常感谢拉斐尔
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多