使用PubNub开发聊天应用程序

mkz*_*mkz 2 apple-push-notifications ios pubnub swift

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

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

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

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

sca*_*bl3 8

首先,关于聊天以及如何构建它,如何构建频道等,有很多不同的方法.为了更好地阅读替代方案,我建议使用入站通道模式来减少历史API调用.这谈到了一些减少频道混乱的有趣方法,但我会坚持通过你当前的设计进行讨论.

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

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

流控制器和通道组

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

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