将传入消息附加到 ChatViewController 集合视图(XMPPFramework+JSQMessagesViewController)
Posted
技术标签:
【中文标题】将传入消息附加到 ChatViewController 集合视图(XMPPFramework+JSQMessagesViewController)【英文标题】:Append incoming message to ChatViewController collectionview (XMPPFramework+JSQMessagesViewController) 【发布时间】:2017-02-23 04:15:13 【问题描述】:我目前正在使用 XMPPFramework 和 JSQMessagesViewController 为 ios 开发一个聊天应用程序,我是新手,所以请耐心等待。
我启动并运行了 XMPP 服务器,我可以通过控制台日志查看发送和传入的消息,我正在尝试将传入消息附加/显示到 collectionView UI (JSQMessagesViewController)。
到目前为止,我所做的是从应用程序委托调用 viewcontroller func 这是传入消息的应用程序委托中的代码
func xmppStream(_ sender: XMPPStream!, didReceive message: XMPPMessage!)
print("Did received message \(message)")
if message.isChatMessageWithBody()
chatView.receiveMessage(passMessage: message.stringValue)
ViewController 方法
func receiveMessage(passMessage: String!)
let receivedMessage = JSQMessage(senderId: senderId, displayName: senderDisplayName, text: passMessage)
self.messages.append(receivedMessage!)
self.finishReceivingMessage(animated: true)
JSQSystemSoundPlayer.jsq_playMessageReceivedSound()
使用这种方法,应用程序在收到消息时崩溃,并且我从 senderId 收到意外的 nil 值错误。 我似乎无法解决这个问题。 请指教 谢谢。
【问题讨论】:
我认为你应该试试 github 上的 JSQ 示例。您需要在 jsqmessagesviewcontroller 子类中实现一些委托方法。 【参考方案1】:是的,问题是您尚未使用所有必需的委托方法设置您的JSQMessagesViewController
。我会查看this link,了解让 JSQ 正常工作所需的最低限度。
另外我会警告强制解包选项(这是你在变量后使用!
的地方)所以我建议改变这个:
func receiveMessage(passMessage: String!)
let receivedMessage = JSQMessage(senderId: senderId, displayName: senderDisplayName, text: passMessage)
self.messages.append(receivedMessage!)
self.finishReceivingMessage(animated: true)
JSQSystemSoundPlayer.jsq_playMessageReceivedSound()
类似这样的东西:
func receiveMessage(passMessage: String)
guard let receivedMessage = JSQMessage(senderId: senderId, displayName: senderDisplayName, text: passMessage) else
AssertionFailure("Could not get message")
return
self.messages.append(receivedMessage)
self.finishReceivingMessage(animated: true)
JSQSystemSoundPlayer.jsq_playMessageReceivedSound()
如果您还有其他问题,请告诉我。 ??
【讨论】:
以上是关于将传入消息附加到 ChatViewController 集合视图(XMPPFramework+JSQMessagesViewController)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Microsoft Bot Framework 将文件附加到消息?