使用PubNub开发聊天应用程序

时间:2015-10-15 09:18:46

标签: ios swift apple-push-notifications pubnub

我必须创建一种让用户互相聊天的能力。我发现PubNub是解决这个问题的好工具。但它似乎并不像我预期的那么容易(。

用户登录后,他出现在对话的屏幕上。对话存储在我的服务器上的数据库中。 db中的会话行示例: conversationID,conversationName,string - 用空格分隔的用户ID 。 要获取会话列表,我可以向服务器数据库发送请求,获取并显示在屏幕上。此外,我必须订阅所有这些会话渠道。每个会话的频道名称可以是我认为的数据库中的ID号。

另外,我创建了一个用户可以创建对话的屏幕。他可以选择一个或多个随播广告,并向所选用户发送邀请。

然后,当用户向其他人发送邀请时,我必须在我的数据库中添加新的会话记录,以某种方式通知该用户邀请。我怎么能做到这一点?我应该使用PubNub的推送通知吗?如上所述here我必须注册我的应用程序才能获得推送通知,然后我可以向通道发送通知。但是,如果用户尚未订阅此频道,用户将如何获得此通知?我被困在这里。

1 个答案:

答案 0 :(得分:8)

首先,关于聊天以及如何构建聊天,如何构建频道等,有很多不同的方法。为了更好地阅读替代方案,我建议使用inbound channel pattern to descrease history API calls。这谈到了一些减少频道混乱的有趣方法,但我会坚持通过你当前的设计进行讨论。

就如何根据当前设计进行处理而言,每个用户应始终为该用户订阅唯一的频道。通过这种方式,您可以使用此频道向用户“发信号”(向其频道发布消息),这可以促进许多工作流程:

  • 收到新的会话邀请(以便他们可以回复)
  • 收到订阅
  • 的新频道
  • 删除对话(如果可能的话)

流控制器&频道组

您还可以使用Stream Controller add-on为每位用户创建Channel Group。频道组也可以被视为订阅组,因为它是您订阅的一组频道(您不能发布到频道组,只能发布频道)。使用它,在用户 - 客户端,他们将始终订阅他们唯一的频道组,在该组中将拥有唯一的用户频道,以及他们将订阅的所有其他会话频道。

在这种情况下,user-1会向user-2发送邀请以加入对话(服务器将其发布到user-2的唯一通道),user-2回应服务器,如果他们接受, 服务器 然后将新的会话通道添加到user-1和user-2的每个频道组!在客户端,用户实际上都不需要更改任何内容,因为他们已经订阅了他们的频道组。