如何使用 Parse (swift) 邀请用户加入多人游戏会话
Posted
技术标签:
【中文标题】如何使用 Parse (swift) 邀请用户加入多人游戏会话【英文标题】:How to invite users to join a multi player Gaming Session using Parse (swift) 【发布时间】:2017-01-30 23:29:05 【问题描述】:我正在尝试开发一个琐事应用程序,很像 Quiz Up,但有多个玩家。
这是我想做的事情:-
在 Parse 上创建一个名为“游戏会话”的类,其中包含创建者 (PFUser.current
)、游戏会话名称 (name) 和受邀用户名称 (invited_users) 的信息。将此游戏会话视为一个封闭组,用户仅在其中相互交互。
所以有一个createSessionViewController
和一个joinSessionViewController
。
如果用户 A 创建一个游戏会话(在 createSessionViewController
中)并向用户 B 和用户 C 发送邀请,他们可以在 joinSessionViewController
中接受或拒绝这些邀请。
现在根据我的研究,我必须查询 Game Session 类中的所有对象(在 joinSessionViewController
的 viewdidload
中)并使用 query.wherekey
例如,用户 B 的对象 ID 在“invited_users
”列。如果是这样,我会返回该游戏会话的对象。是对的吗?
如果是这样,这是一种有效的方法吗?因为看起来如果应用程序变得流行并且类中有很多对象,那么获取具有用户 B id 的一个对象可能会花费大量时间。 我希望我说清楚了,你们理解我的问题。
PS:我对解析和 swift 有点陌生,所以如果你能给我详细的答案,我将不胜感激。
【问题讨论】:
【参考方案1】:您的逻辑是正确的,但我也强烈建议您看看 Parse-LiveQuery。此工具允许您订阅您感兴趣的PFQuery
。订阅后,只要创建或更新与PFQuery
匹配的PFObject
,服务器就会实时通知客户端。
https://github.com/ParsePlatform/parse-server/wiki/Parse-LiveQuery
https://github.com/ParsePlatform/ParseLiveQuery-ios-OSX
【讨论】:
从我从您提供的链接中了解到的是,当我实际进入“游戏会话”并且对其进行了编辑(通过新问题、积分、回合等)时,PFLiveQuery 会很有用)。但是,我想知道这是否是一种有用的方法,可以在 joinSessionViewController 的 viewDidLoad 中使用用户的对象 ID 获取 Game Session 的初始对象。【参考方案2】:您的假设是正确的,这确实是您可以这样做的一种方法,尽管它有您提到的缺点。如果您想投入更多精力,您可以编写 javascript 解析云代码,该代码在保存项目后(例如在创建游戏会话后)执行,并向使用新对象 ID 的用户发送静默推送通知。邀请。然后,您可以使用该推送通知数据来了解确切的 ID,而不必查询它们。不过,这要先进得多。无论您的应用程序是什么,让模型查询加载数据的简单途径都应该没问题。如果您发现自己因此而导致性能受到阻碍,那么恭喜您。
【讨论】:
以上是关于如何使用 Parse (swift) 邀请用户加入多人游戏会话的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Multipeer Connectivity 框架邀请用户加入我的会话?
如何使用 swift 从 Parse 上的用户指针中检索数据