I am developing a chat app for iPhone using XMPP and openfire server,OpenFire server is storing all the chat history between users but When I try to retrieve the chat histor
Swift version of fetch archive messages from openfire server Request:
func getArchieveMessages(){
let iQ = DDXMLElement.elementWithName("iq")
iQ.addAttributeWithName("type", stringValue: "get")
iQ.addAttributeWithName("id", stringValue: "page1")
let list = DDXMLElement.elementWithName("retrieve")
list.addAttributeWithName("xmlns", stringValue: "urn:xmpp:archive")
list.addAttributeWithName("with", stringValue: "partner@domain")
let set = DDXMLElement.elementWithName("set")
set.addAttributeWithName("xmlns", stringValue: "http://jabber.org/protocol/rsm")
let max = DDXMLElement.elementWithName("max")
max.addAttributeWithName("xmlns", stringValue: "http://jabber.org/protocol/rsm")
//(max as! DDXMLElement).setStringValue("30")
(set as! DDXMLElement).addChild(max as! DDXMLNode)
list.addChild(set as! DDXMLNode)
iQ.addChild(list as! DDXMLNode)
xmppStream.sendElement(iQ as! DDXMLElement)
}
Response:
func xmppStream(sender: XMPPStream!, didReceiveIQ iq: XMPPIQ!) -> Bool {
let chat = iq.elementForName("chat")
let chats = (chat as DDXMLElement).children()
for chat in chats{
let msg = chat
let body = (msg as! DDXMLElement).elementForName("body")
if body != nil{
if body.stringValue() != nil{
//print(body.stringValue()!)
chatMessages.append(body.stringValue()!)
if msg.attributeForName("jid") == nil{
type.append("Send")
}
else{
type.append("Receive")
}
}
}
}
print("Did receive IQ")
return false
}
*with is the jid of the person whose archive messages you want to fetch