我目前正在开发一个以Google Cloud Firestore作为后端的iOS应用,我正在使用一些侦听器来查找数据是否已更新,然后将其相应地推送到我的设备上。我编写了此函数,该函数侦听是否为true的值,并据此将更新我的应用程序中的动画。问题是我不知道我是否正确编写了它,并且如果不需要的话,也不想从数据库中进行不必要的读取。
func dingAnimation() {
let identifier = tempDic![kBOUNDIDENTIFIER] as! String
if identifier != "" {
dingListener = reference(.attention).document(identifier).addSnapshotListener({ (snapshot, error) in
if error != nil {
SVProgressHUD.showError(withStatus: error!.localizedDescription)
return
}
guard let snapshot = snapshot else { return }
let data = snapshot.data() as! NSDictionary
for dat in data {
let currentId = FUser.currentId() as! String
let string = dat.key as! String
if string == currentId {
} else {
let value = dat.value as! Bool
self.shouldAnimate = value
self.animateImage()
}
}
})
}
}
答案 0 :(得分:0)
这可能会对您有所帮助。
从Firestore DOCS-了解Cloud Firestore计费
https://firebase.google.com/docs/firestore/pricing
收听查询结果
Cloud Firestore允许您收听查询结果并在查询结果更改时获取实时更新。
当您收听查询结果时,每次添加或更新结果集中的文档时,您都要收取阅读费用。由于文档已更改而从结果集中删除文档时,还会向您收取阅读费用。(相反,当文档被删除时,您无需支付阅读费用。)
此外,如果侦听器被断开了30分钟以上(例如,如果用户离线),则您将被收取费用,就像您已经发出了全新查询。