Firebase离线iOS:如何可靠地保持同步?

时间:2017-03-27 23:42:09

标签: ios swift firebase firebase-realtime-database synchronization

我在我的应用中使用Firebase 离线,以便在用户接收不良的情况下保留功能。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {    
    FIRApp.configure()
    FIRDatabase.database().persistenceEnabled = true
    let all = FIRDatabase.database().reference(withPath:"all")
    all.keepSynced(true)
...

但是,我注意到数据并不总是新鲜的。有时在其他地方修改的数据在强制退出之前不会显示。此外,有时在注销并重新登录后不会显示新创建的数据。

是否有可以手动执行同步的功能?

1 个答案:

答案 0 :(得分:4)

不,Firebase不会导出手动数据库同步API。我怀疑他们不是因为云可扩展性等问题。

您现在可以做的最好的事情就是继续使用FIRDatabaseReference.keepSynced API。文档使这一点有点明确(但肯定可以改进!):

  

通过在某个位置调用keepSynced(true),该位置的数据将自动下载并保持同步,即使没有为该位置连接侦听器也是如此。此外,虽然位置保持同步,但不会从持久性磁盘缓存中逐出。

话说回来,在设计网络应用时,始终需要考虑 Fallacies of Distributed Computing 。特别是,前三个想到了:

  
      
  1. 网络可靠。
  2.   
  3. 延迟为零。
  4.   
  5. 带宽是无限的。
  6.   

换句话说,设计最坏的和最好的希望: - )