테이블보기가 있습니다. 각 테이블보기에는 Firebase 데이터베이스에서 채워지는 다른 책들이 있습니다. 각 테이블보기 셀에는 메시지 단추가 있습니다. 버튼을 클릭하면 로그인 한 사용자가 해당 책을 게시 한 사용자에게 메시지를 보낼 수 있습니다. 내가 메시지를 보낼 때, 그것은 의도 된 사용자에게 전송하지만, 사용자가 하나 이상의 책이있는 경우는 모든 책에 동일한 메시지를 전송 JSQMessengerController을 사용하고Firebase를 사용하여 메시지 보내기
@IBAction func sendMessage(_ sender: Any) {
let indexPath = self.selectedIndex
let post = self.posts![(indexPath?.row)!] as! [String: AnyObject]
self.infoID = post["postID"] as? String
performSegue(withIdentifier: "sendMessageToUser", sender: self.userpicuid)
}
override public func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard segue.identifier == "sendMessageToUser", let chatVc = segue.destination as? SendMessageViewController else {
return
}
chatVc.senderId = self.loggedInUser?.uid
chatVc.receiverData = self.userpicuid
chatVc.senderDisplayName = self.userpicuid
chatVc.username = self.username
chatVc.infoID = self.infoID
chatVc.bookName = self.bookName
}
.
override func didPressSend(_ button: UIButton!, withMessageText text: String!, senderId: String!, senderDisplayName: String!, date: Date!) {
guard let uid = FIRAuth.auth()?.currentUser?.uid else {
return
}
let convoRef = FIRDatabase.database().reference().child("messages").child(convoId!)
let itemRef = rootRef.child("messages").child(convoId!).childByAutoId() // 1
let messageItem = [ // 2
"senderId": senderId!,
"ReceiverId": senderDisplayName!,
"text": text!,
"timestamp": NSDate().timeIntervalSince1970,
"convoId": convoId!,
"infoID": infoID!
] as [String : Any]
itemRef.setValue(messageItem) // 3
itemRef.updateChildValues(messageItem) { (error, convoRef) in
if error != nil{
print(error)
return
}
let userMessagesRef = FIRDatabase.database().reference().child("user-messages").child(self.convoId!).child(senderDisplayName!)
let messageId = itemRef.key
userMessagesRef.updateChildValues([messageId: 1])
let recipientUserMessagesRef = FIRDatabase.database().reference().child("user-messages").child(self.convoId!).child(senderId!)
recipientUserMessagesRef.updateChildValues([messageId: 1])
}
JSQSystemSoundPlayer.jsq_playMessageSentSound() // 4
finishSendingMessage() // 5
isTyping = false
}
이 난 단지에 메시지가 내가 클릭 셀 (하나의 책)로 전송합니다. 그래서 제 의도는 입문 통계 책에 대한 "안녕"메시지를 보내는 것이 었습니다. 또한 책의 내용을 보냅니다. 책 ...