Swift Firebase聊天室

时间:2018-05-03 05:37:39

标签: swift firebase chat

我有聊天应用程序可能发送消息一对一(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
}
}

1 个答案:

答案 0 :(得分:0)

目前你有From / To。

所以要成为一个房间而不是一个人。

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

所以你需要一个房间节点。

如果您有一个消息节点,那么您可以按To(room)而不是To(用户)排序,以获取该聊天室中发送的所有消息。 From将始终是编写消息的用户