私はFirebase
とJSQMessagesViewcontroller
を使用しています。私はいくつかのメッセージをテストに追加しますが、表示されませんでした。誰かが私が逃したものを見て助けることができますか?ありがとう!JSQMessagesViewControllerとFirebase
マイコード:
import UIKit
import Firebase
import JSQMessagesViewController
class ChatViewController: JSQMessagesViewController {
var messages = [JSQMessage]()
lazy var outgoingBubbleImageView:JSQMessagesBubbleImage = self.setupOutgoingBubble()
lazy var incomingBubbleimageView:JSQMessagesBubbleImage = self.setupIncomingBubble()
override func viewDidLoad() {
super.viewDidLoad()
self.senderDisplayName = "cindy"
self.senderId = FIRAuth.auth()?.currentUser?.uid
print("sender id is: \(self.senderId)")
}
override func viewDidAppear(_ animated: Bool) {
addMessage(withId: "john", name: "doo", text: "hello, I am here")
addMessage(withId: senderId, name: "Me", text: "how are you")
addMessage(withId: senderId, name: "Me", text: "i am earlier than you.")
// I added finishReceivingMessage() here, but the app crashed.
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return messages.count
}
override func collectionView(_ collectionView: JSQMessagesCollectionView!, messageDataForItemAt indexPath: IndexPath!) -> JSQMessageData! {
return messages[indexPath.item]
}
override func collectionView(_ collectionView: JSQMessagesCollectionView!, messageBubbleImageDataForItemAt indexPath: IndexPath!) -> JSQMessageBubbleImageDataSource! {
let message = messages[indexPath.item]
if message.senderId == senderId {
return outgoingBubbleImageView
} else {
return incomingBubbleimageView
}
}
func addMessage(withId id:String, name: String, text:String) {
if let message = JSQMessage(senderId: id, displayName: name, text: text) {
self.messages.append(message)
}
}
func setupOutgoingBubble() -> JSQMessagesBubbleImage {
let bubbleImagesFactory = JSQMessagesBubbleImageFactory()
return (bubbleImagesFactory?.outgoingMessagesBubbleImage(with: UIColor.jsq_messageBubbleBlue()))!
}
func setupIncomingBubble() -> JSQMessagesBubbleImage {
let bubbleImagesFactory = JSQMessagesBubbleImageFactory()
return (bubbleImagesFactory?.incomingMessagesBubbleImage(with: UIColor.jsq_messageBubbleLightGray()))!
}
}
新しい、追加されたメッセージのコレクションビューに通知するのを忘れたと思いますが、私はそれに賭けませんでした。 – vzsg
こんにちはFrank、finishReceivingMessage()を追加した後、アプリがクラッシュしました。 – developermike