【发布时间】:2017-01-16 11:51:54
【问题描述】:
我正在尝试使用 xmpp_messenger_ios 和 XMPPFramework 在 iOS 上做一个 MUC
这是加入房间的代码。
func createOrJoinRoomOnXMPP(){
// location has named array of lat and long
NSLog("Creating room on XMPP")
let roomJID: XMPPJID = XMPPJID.jidWithString(self.roomID + "@conference.ip-172-31-41-100")
let roomData: XMPPRoomCoreDataStorage = XMPPRoomCoreDataStorage.sharedInstance()
let chatRoom = XMPPRoom.init(roomStorage: roomData, jid: roomJID, dispatchQueue: dispatch_get_main_queue())
chatRoom.activate(OneChat.sharedInstance.xmppStream)
chatRoom.addDelegate(self, delegateQueue: dispatch_get_main_queue())
// let history = DDXMLElement.elementWithName("history")
// // Get lst messegs of the room
// history.addAttributeWithName("maxstanzas", stringValue: "10")
chatRoom.joinRoomUsingNickname(OneChat.sharedInstance.xmppStream!.myJID.user, history: nil)
}
只要这个块执行,我就会在这段代码中得到一个错误:
扩展 OneMessage:XMPPStreamDelegate {
public func xmppStream(sender: XMPPStream, didSendMessage message: XMPPMessage) {
if let completion = OneMessage.sharedInstance.didSendMessageCompletionBlock {
completion(stream: sender, message: message)
}
//OneMessage.sharedInstance.didSendMessageCompletionBlock!(stream: sender, message: message)
}
public func xmppStream(sender: XMPPStream, didReceiveMessage message: XMPPMessage) {
let user = OneChat.sharedInstance.xmppRosterStorage.userForJID(message.from(), xmppStream: OneChat.sharedInstance.xmppStream, managedObjectContext: OneRoster.sharedInstance.managedObjectContext_roster())
if !OneChats.knownUserForJid(jidStr: user.jidStr) { // <<< ERROR LINE
OneChats.addUserToChatList(jidStr: user.jidStr)
}
if message.isChatMessageWithBody() {
OneMessage.sharedInstance.delegate?.oneStream(sender, didReceiveMessage: message, from: user)
} else {
//was composing
if let _ = message.elementForName("composing") {
OneMessage.sharedInstance.delegate?.oneStream(sender, userIsComposing: user)
}
}
}
}
致命错误:在展开可选值时意外发现 nil
我注意到,一旦与聊天室建立连接,它就会获取以前的消息,从而执行上述代码。
请帮助我在 ios 上为房间聊天做一个 MUC。我已经搜索了,但没有找到任何解决方案。
谢谢
【问题讨论】:
-
致命错误发生在哪一行?
-
if !OneChats.knownUserForJid(jidStr: user.jidStr) { 这是给出错误的行。
-
OneChats.knownUserForJid的返回值是什么类型? -
我没有。
-
嗨@ramitwadhwa .. 我正在使用你在帖子中提到的相同的 pod 文件.. bt 不能进行 muc 聊天.....希望你已经做到了.. 如果你有它的演示项目发送给我的朋友..我卡在粘液中..没有关于这个的参考帖子..帮助我..
标签: swift xmpp xmppframework multiuserchat