タイムスタンプ機能を自分のアプリケーションで動作させようとしていますが、そうではありません。私はJSQMessagesViewController
とチャットアプリを構築しています。ユーザーが送信するメッセージごとに、そのメッセージをデータベースに表示します。Firebaseデータベースに値を追加
これまでのところ、これは私が持っているコードです。ここで
//ADD A NEW MESSAGE
let timeStamp = NSNumber(value: Int(NSDate().timeIntervalSince1970))
private func addMessage(withId id: String, name: String, text: String, time: NSNumber) {
if let message = JSQMessage(senderId: id, displayName: name, text: text) {
messages.append(message)
}
}
override func didPressSend(_ button: UIButton!, withMessageText text: String!, senderId: String!, senderDisplayName: String!, date: Date!) {
let itemRef = rootRef.child("messages").child("\(self.convoId!)").childByAutoId() // 1
let messageItem = [ // 2
"senderId": senderId!,
"ReceiverId": senderDisplayName!,
"text": text!,
"timestamp": timeStamp,
] as [String : Any]
itemRef.setValue(messageItem) // 3
JSQSystemSoundPlayer.jsq_playMessageSentSound() // 4
finishSendingMessage() // 5
isTyping = false
}
private func observeMessages() {
// 1.
let messageQuery = rootRef.child("messages/\(self.convoId!)").queryLimited(toLast: 25)
// 2. We can use the observe method to listen for new
// messages being written to the Firebase DB
newMessageRefHandle = messageQuery.observe(.childAdded, with: { (snapshot) -> Void in
// 3.
let messageData = snapshot.value as! Dictionary<String, String>
if let id = messageData["senderId"] as String!, let name = messageData["ReceiverId"] as String!, let text = messageData["text"] as String!, let time = messageData["timeStamp"] as Any!, text.characters.count > 0 {
// 4.
self.addMessage(withId: id, name: name, text: text, time: time as! NSNumber)
// 5
self.finishReceivingMessage()
}
あなたにはどんなエラーがありますか?または問題? –
@VladPulichevメッセージを送信するとアプリがクラッシュしました。メッセージはデータベースに送られますが、私のView Controllerには表示されず、 'let messageData = snapshot.value as! Dictionary ' –
juelizabeth
ようにしよう! [文字列:AnyObject]。それは助けてくれましたか? –