如何使用 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 类中的所有对象(在 joinSessionViewControllerviewdidload 中)并使用 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 上的用户指针中检索数据

使用 Parse (Swift 3) 注册用户时如何添加头像

如何在我的应用程序中阻止用户(swift + parse)

如何创建唯一代码以邀请新用户加入移动应用程序中的群组

如何使用 Swift 2.0 在 Parse.com (REST API) 中上传图像并将其与用户关联