如何使消息立即在收件人的设备上可见 - SwiftUI 和 FirebaseFirestore

How to make the message visible on the recipient's device instantly - SwiftUI and FirebaseFirestore

我通过 SwiftUI-FirebaseFirestore 制作了 ChatApp。我运行同时有2个模拟器,如果用户A给用户B发消息,我得重新加载用户B的界面才能显示。我希望它是自动的并立即显示,那有什么想法呢?

您正在寻找的是所谓的快照侦听器。实际上,它的处理方式与任何其他文档相同,但它有一个闭包,允许您响应特定文档的更新事件。它的一般用法是这样的。

db.collection("cities").document("SF")
.addSnapshotListener { documentSnapshot, error in
  guard let document = documentSnapshot else {
    print("Error fetching document: \(error!)")
    return
  }
  guard let data = document.data() else {
    print("Document data was empty.")
    return
  }
  print("Current data: \(data)")
}

您应该能够查看文档快照以确定数据中的任何更改,然后响应这些更改。在您的情况下,您将重新加载视图。

https://firebase.google.com/docs/firestore/query-data/listen