在我的项目中,当每个用户进入应用程序 (Swift-iOS) 时,他们会将时间戳字段更新为当前时间后 24 小时。 Firestore 中的数据树如下所示。每个用户数据作为文档,包含在“users”集合中。
users-collection
user1-document
username: nameA
timestamp: 1574102072
user2-document
username: nameB
timestamp: 1574102234
除非他们在 24 小时内再次进入应用程序,并且当基于其注册时间戳的时间到了时,我想发送推送通知 (FCM)。
我计划安排云功能,但此时云功能必须定期(例如每5分钟)读取太多文档并找到结束的时间戳,以发送通知。这确实是一个成本高昂的方式。有没有其他方法来处理这个问题?
最佳答案
我建议您的查询按时间过滤文档,而不是查询整个集合并检查客户端上的时间,这样您就只能获得所需的文档。请参阅documentation 。例如:
usersRef = db.collection('users').where('timestamp', '>', current_time);
如果将结果集限制为仅查找您实际需要的文档,则查询将更快且更便宜。
关于swift - Firebase 计划推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58905489/