我正在制作一个有Firebase后端的国际象棋应用程序,我正在使用云firestore和云函数。基本上,我使用node 8来避免云函数上的计费问题,我可以调用和触发,但我不能考虑如何在另一台设备上而不是我自己的设备上进行操作。
在认证和登录之后,用户进入一个大厅,该大厅是一个tableViewController,并且只显示当前登录的用户。
我想要实现的是,通过点击某一行,点击它的用户会得到一个提示,说明他是接受挑战还是拒绝挑战。在此基础上,我继续进行游戏或做一些其他的事情。
问题是,如何在另一个用户的设备上触发此警报?
我也看过一些帖子,说可以在文档上使用snapshotListener,但我再次遇到了理解如何在另一台设备上触发警报的问题。如果你还有其他好的想法,请分享!
感谢您的反馈!
发布于 2020-09-27 07:15:01
我认为快照监听器真的是唯一的选择。您可以使用其他Firebase服务,但这些不是合适的工具。考虑创建一个集合,也许将其称为请求:
[requests]
<userId-userId> (recipientUserId-initiatorUserId)
initiator: string
recipient: string
date: date每个用户都有一个快照侦听器,该侦听器侦听此集合,其中他们自己的userId等于recipient。例如,您可以添加一个日期字段,以便按最近的日期对列表进行排序。当一个用户想要质询另一个用户时,他们需要做的就是在这个集合中创建一个文档:
<userId-userId> (recipientUserId-initiatorUserId)
initiator: myUserId
recipient: theirUserId
date: now收件人的客户端将立即看到此文档。
您可以在此文档中包含装饰性数据,如发起人的显示名称或其头像的路径。但是这些数据在呈现时可能已经过时了,因此另一种方法是使用userId从数据库中获取修饰数据。您也可以自动生成文档ID,但是如果您配置它(如下所示),它可以使删除等操作变得更简单。您还可以将userIds配置为字母数字,以便在两个用户之间只能存在一个请求;但是,如果它们同时彼此请求,其中一个将覆盖另一个,您必须处理这种潜在的边缘情况。需要考虑的事情有很多,但这只是起点。
https://stackoverflow.com/questions/64081141
复制相似问题