我制作了使用 SwiftUI-FirebaseFirestore 的 ChatApp。我同时运行 2 个模拟器,如果“用户 A”向“用户 B”发送消息,我必须重新加载“用户 B”的应用程序界面才能显示更新的数据。我希望它是自动的,并在消息发送后立即显示在 Firestore 内,那么该怎么做呢?
您正在寻找的称为快照侦听器。实际上,它的处理方式与任何其他文档相同,但它有一个闭包,允许您响应特定文档上的更新事件。一般用法是这样的。
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