Firebase聊天 - 通知其他用户

时间:2016-04-04 01:25:01

标签: swift firebase chat

我目前正在使用Firebase构建应用,并决定实施聊天。

我能够使用JSQMessagesVC作为GUI,并使Firebase聊天方面也能正常工作(通过组合2个UID来创建聊天室,例如:/ 123_456)。但是,如果他们收到消息,我将失去通知其他用户的方法。 (如果用户123打开聊天室123_456并在其中发送消息,如何通知用户456他们已收到消息?)

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您的问题与设计数据库更相关。如果实现聊天功能,您需要重新考虑数据库结构。它完全与数据库结构有关,因为Firebase不会为您提供任何触发器,因此您可以在其他节点(即数据库表)上执行某些操作,并在您所在的节点中执行主要操作。

虽然您可能已经阅读了所有这些教程,但无论如何都可以再看看structuring your data

这里有一个很好的chat example,可能对您有所帮助。虽然它指的是群聊。您可以查看数据库是如何为此目的而构建的。

基本上,当有人打开房间与其他人聊天时,您需要在客户端的不同节点中添加一些额外的操作。

哦,这是另一个SO Answer,你应该看看。

答案 1 :(得分:0)

我遇到了同样的问题,我通过添加一个额外的节点来解决这个问题,每个用户都有许多聊天室。将观察者放在聊天室中的用户(在下面的情况下为“0888a5dc-fe8d-4498-aa69-f9dd1361fe54”),带有计数器,描述和时间戳。每个新消息,更新计数器和lastMessage等,请参见下文:

 "Messages" : {
"0888a5dc-fe8d-4498-aa69-f9dd1361fe54" : {
  "0888a5dc-fe8d-4498-aa69-f9dd1361fe5451879163-8b35-452b-9872-a8cb4c84a6ce" : {
    "counter" : 2,
    "description" : "Breta",
    "lastMessage" : “cool”,
    "lastUser" : "51879163-8b35-452b-9872-a8cb4c84a6ce",
    "messageType" : "txt",
    "sortTimestamp" : -1.459518501758476E9,
    "updatedAction" : 1.459518501758468E9,
    "userId" : "51879163-8b35-452b-9872-a8cb4c84a6ce"
  },
  "0888a5dc-fe8d-4498-aa69-f9dd1361fe547bfe8604-58ad-4d18-a528-601b76dd2206" : {
    "counter" : 0,
    "description" : "Romeo",
    "lastMessage" : “yep”,
    "lastUser" : "0888a5dc-fe8d-4498-aa69-f9dd1361fe54",
    "messageType" : "txt",
    "sortTimestamp" : -1.459527387138615E9,
    "updatedAction" : 1.459527387138613E9,
    "userId" : "7bfe8604-58ad-4d18-a528-601b76dd2206"
  }
}