Swift Firebase 聊天室

Swift Firebase chat room

我有可以一对一发送消息的聊天应用程序 (fromId/toId)。我想用聊天室升级它。我该怎么做? ChatingRoom 需要什么样的数据库结构?我还需要做什么?

我的User.swift模特:

import Foundation
import Firebase

class User: NSObject {

var id: String?
var name: String?
var login: String?
var email: String?
var profileImageUrl: String?
var role: String?
var isOnline: String?
init(dictionary: [String: AnyObject]) {
    self.isOnline = dictionary["isOnline"] as? String
    self.id = dictionary["userID"] as? String
    self.name = dictionary["name"] as? String
    self.login = dictionary["username"] as? String
    self.email = dictionary["email"] as? String
    self.profileImageUrl = dictionary["profileImageUrl"] as? String
    self.role = dictionary["role"] as? String
}
}

Message.swift 型号:

import UIKit
import Firebase

class Message: NSObject {

var fromId: String?
var text: String?
var timestamp: NSNumber?
var toId: String?
var imageUrl: String?
var videoUrl: String?
var imageWidth: NSNumber?
var imageHeight: NSNumber?

init(dictionary: [String: Any]) {
    self.fromId = dictionary["fromId"] as? String
    self.text = dictionary["text"] as? String
    self.toId = dictionary["toId"] as? String
    self.timestamp = dictionary["timestamp"] as? NSNumber
    self.imageUrl = dictionary["imageUrl"] as? String
    self.videoUrl = dictionary["videoUrl"] as? String

    self.imageWidth = dictionary["imageWidth"] as? NSNumber
    self.imageHeight = dictionary["imageHeight"] as? NSNumber
}

func chatPartnerId() -> String? {
    return fromId == Auth.auth().currentUser?.uid ? toId : fromId
}
}

目前你有从/到。

所以 To 将是一个房间而不是一个人。

用户需要能够加入一个(或多个)房间才能看到发送到该房间的消息。

所以您需要一个 Rooms 节点。

如果您有一个消息节点,那么您可以只按收件人(房间)而不是收件人(用户)排序,以获取该聊天室中发送的所有消息。发件人将始终是写邮件的用户