我通过在 open fire 中安装 open fire 插件来从 openfire 获取历史记录并尝试了这段代码。
let iq1 = DDXMLElement(name: "iq")
iq1.addAttribute(withName: "type", stringValue: "get")
iq1.addAttribute(withName: "id", stringValue: "0")
let retrieve = DDXMLElement(name: "retrieve", xmlns: "urn:xmpp:archive")
retrieve?.addAttribute(withName: "with", stringValue: "[email protected]")
let set = DDXMLElement(name: "set", xmlns: "http://jabber.org/protocol/rsm")
let max = DDXMLElement(name: "max", stringValue: "50")
iq1.addChild(retrieve!)
retrieve?.addChild(set!)
set?.addChild(max)
stream?.send(iq1 )
现在我没有得到双方的历史记录。这是我得到的结果。
<iq xmlns="jabber:client"
type="result"
id="0"
to="[email protected]/5qsinh1syg">
<chat xmlns="urn:xmpp:archive"
with="[email protected]"
start="2017-02-07T06:28:33.691Z">
<from secs="0">
<body>hello</body>
</from>
<from secs="405">
<body>hiii</body>
</from>
<from secs="580">
<body>Hey</body>
</from>
<from secs="599">
<body>HooooE</body>
</from>
<from secs="628">
<body>hOo</body>
</from>
<from secs="907">
<body>Raman here</body>
</from>
<from secs="931">
<body>Raman here ONE</body>
</from>
<from secs="1273">
<body>Raman here</body>
</from>
<from secs="1558">
<body> Raman from SPark </body>
</from>
<from secs="1571">
<body> Raman from SPark One</body>
</from>
<from secs="1782">
<body>Raman from SPark </body>
</from>
<from secs="2651">
<body>Raman FiVE</body>
</from>
<from secs="2810">
<body>Raman Three</body>
</from>
<from secs="2810">
<body>Raman FOur</body>
</from>
<from secs="3534">
<body>RAMAN SIX</body>
</from>
<from secs="4105">
<body>Raman OKK</body>
</from>
<from secs="4113">
<body>OKKK l</body>
</from>
<from secs="4130">
<body>UST</body>
</from>
<set xmlns="http://jabber.org/protocol/rsm">
<first index="0">0</first>
<last>17</last>
<count>18</count>
</set>
</chat>
</iq>
这是 RAMAN 的所有消息,而不是 BENTICk,因为这两个用户在获取历史记录时参与聊天,我只收到 RAMAN 的消息。不是本蒂克
如何从双方用户获取历史记录。
请帮忙。
我已经实现了相同的方法,通过发送给定的 iq 来接收和接收消息
我得到了正确的结果。
let iQ = DDXMLElement.element(withName: "iq") as! DDXMLElement
iQ.addAttribute(withName: "type", stringValue: "get")
iQ.addAttribute(withName: "id", stringValue: (xmppHandler.xmppStream?.generateUUID())!)
let retrieve = DDXMLElement(name: "retrieve", xmlns: "urn:xmpp:archive")
retrieve?.addAttribute(withName: "with", stringValue: "\(JID!)@\(Utility.hostname)")
let set = DDXMLElement.element(withName: "set") as! DDXMLElement
set.addAttribute(withName: "xmlns", stringValue: "http://jabber.org/protocol/rsm")
let max = DDXMLElement.element(withName: "max") as! DDXMLElement
max.stringValue = "10"
max.addAttribute(withName:"xmlns", stringValue: "http://jabber.org/protocol/rsm")
iQ.addChild(retrieve!)
retrieve?.addChild(set)
set.addChild(max as DDXMLNode)
xmppHandler.xmppStream?.send(iQ)
<iq type="get" id="7705EEC5-3385-42D4-B748-B39C204ADB90"><retrieve xmlns="urn:xmpp:archive" with="[email protected]"><set xmlns="http://jabber.org/protocol/rsm"><max xmlns="http://jabber.org/protocol/rsm">10</max></set></retrieve></iq>
Response
<iq xmlns="jabber:client" type="result" id="7705EEC5-3385-42D4-B748-B39C204ADB90" to="[email protected]/Smack">
<chat xmlns="urn:xmpp:archive" with="[email protected]" start="2017-02-28T09:55:27.068Z">
<from secs="0" jid="[email protected]">
<body>Hiii rajeev</body>
</from>
<to secs="52">
<body>Hi
How r u</body>
</to>
<from secs="15" jid="[email protected]"><body>I am good</body></from>
<to secs="8"><body>What abt u</body></to>
<to secs="169"><body>Hello testing chat</body></to>
<from secs="10" jid="[email protected]"><body>Good</body></from>
<from secs="5" jid="[email protected]"><body>Continue </body></from>
<to secs="834"><body>Ok
</body></to>
<to secs="8"><body>Nice chat
</body></to>
<from secs="232" jid="[email protected]"><body>Heelo</body></from>
<set xmlns="http://jabber.org/protocol/rsm"><first index="0">0</first> <last>9</last><count>574</count></set></chat></iq>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)