【发布时间】:2022-07-09 01:25:43
【问题描述】:
我有一个设置为 ObservableObject 的类来监听 Firestore 集合。一切正常,直到应用程序进入睡眠状态(例如 30 分钟后)并且云函数运行以更新一些数据。然后,在我杀死并再次打开应用程序之前,不再发生实时更新,只有在那之后我才能获得最新的更新。
我的代码是这样工作的:
class FirebaseRealTime: ObservableObject {
..
@Published var myUsers = [Users]()
..
self.listenToUserCollection()
..
func listenToUserCollection {
db.collection("users").addSnapshotListener { (querySnapshot, error) in
DispatchQueue.global(qos: .background).async {
..
DispatchQueue.main.async {
self.myUsers = tempUsers
//self.usersLoaded = true
}
..
}
}
然后我有一个接收实时数据的 SwiftUI 视图。
struct ViewExample: View {
@EnvironmentObject var userDetails:FirebaseRealTime
@State var users:[Users] = []
var body: some View {
VStack {
ScrollView {
ForEach(users) { user in
RowExample(user: user)
}
}
}
.onReceive(userDetails.$myUsers) { data in
print (data)
}
}
}
正如我所说,当应用程序处于活动状态并且我手动更改 Firestore 中的一个字段时,数据会更新,但当 Google Cloud 函数在后端运行时它不会。
知道发生了什么吗?有没有办法“强制”接收到的数据进行更新,或任何其他解决方法?
【问题讨论】:
标签: firebase google-cloud-firestore swiftui google-cloud-functions combine