Firebase云功能国际象棋游戏Swift



我正在制作一个有Firebase后端的国际象棋应用程序,我正在使用云firestore和云功能。基本上,我使用node8来避免云功能上的计费问题,我可以调用和触发,但我无法思考如何在另一台设备上而不是在自己的设备上执行操作。

验证和登录后,用户进入大厅,大厅是tableViewController,只显示当前登录的用户。

我想实现的是,通过点击某一行,点击该行的用户会收到一个提示,说明他是接受挑战还是拒绝挑战。基于此,我继续游戏或做其他事情。

但问题是,如何在其他用户的设备上触发此警报?

我还看到一些帖子说,可以在文档上使用snapshotListener来完成这项工作,但我再次遇到了理解如何在另一台设备上触发警报的问题。如果你还有其他好主意,请分享!

感谢您的反馈!

我认为快照侦听器实际上是唯一的方法。您可以使用其他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,但如果您配置它(像这样(,它可以简化删除等操作。您还可以将userId配置为字母数字,这样两个用户之间只能存在一个请求;但如果他们同时请求对方,其中一个会覆盖另一个,你就必须处理潜在的边缘情况。有很多事情需要考虑,但这是起点。

相关内容

  • 没有找到相关文章

最新更新