I am working on the iOS chat client. Can anyone please help me with the Multi-User Chat?
I have implemented Robbiehanson\'s XMPPFramework.
Can anyone please
Here is a Swift version:
func joinRoom(with jidString: String, delegate: XMPPRoomDelegate) -> XMPPRoom {
let roomJID = XMPPJID(string: jidString)
let roomStorage = XMPPRoomCoreDataStorage.sharedInstance()
let room = XMPPRoom(roomStorage: roomStorage, jid: roomJID, dispatchQueue: DispatchQueue.main)!
room.activate(xmppStream)
room.addDelegate(delegate, delegateQueue: DispatchQueue.main)
// If the room is not existing, server will create one.
room.join(usingNickname: xmppStream.myJID.user, history: nil)
return room
}
// MUCRoomDelegate
public func xmppRoomDidCreate(_ sender: XMPPRoom!) {
print("xmppRoomDidCreate")
// I prefer configure right after created
sender.fetchConfigurationForm()
}
public func xmppRoomDidJoin(_ sender: XMPPRoom!) {
print("xmppRoomDidJoin")
}
public func xmppRoom(_ sender: XMPPRoom!, didFetchConfigurationForm configForm: DDXMLElement!) {
print("didFetchConfigurationForm")
let newForm = configForm.copy() as! DDXMLElement
for field in newForm.elements(forName: "field") {
if let _var = field.attributeStringValue(forName: "var") {
switch _var {
case "muc#roomconfig_persistentroom":
field.remove(forName: "value")
field.addChild(DDXMLElement(name: "value", numberValue: 1))
case "muc#roomconfig_membersonly":
field.remove(forName: "value")
field.addChild(DDXMLElement(name: "value", numberValue: 1))
// other configures
default:
break
}
}
}
sender.configureRoom(usingOptions: newForm)
}
public func xmppRoom(_ sender: XMPPRoom!, didConfigure iqResult: XMPPIQ!) {
print("didConfigure")
}