我正在将 XMPP 功能集成到我的 ios 应用程序中,但遇到了一个无法解决的问题。
问题是我无法从服务器获取存档的消息。我的客户能够登录,并且我已经成功测试了多个服务调用(发送、接收消息、获取有关用户的信息)。
发送后
<iq type='get' id='pref1'>
<pref xmlns='urn:xmpp:archive'/>
</iq>
响应是
SEND: <iq type="get"><pref xmlns="urn:xmpp:archive"/></iq>
RECV: <iq xmlns="jabber:client" type="error" to="1@iis2/ae76edc"><error code="501"
type="cancel"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-
stanzas"/</error></iq>
当服务器管理员激活归档时,他能够看到已归档的消息。
为了实现此功能,必须在服务器端或客户端执行某些操作吗?难道看到旧消息和服务器实际实现和支持 XEP-0136 是两件不同的事情吗?
如果您想从服务器获取数据,请使用此代码
internal var xmppMAM: XMPPMessageArchiveManagement?
func setupXMPPMam(){
xmppMAM = XMPPMessageArchiveManagement.init()
xmppMAM?.addDelegate(self, delegateQueue: .global(qos: .background))
// stream is XMPPStream
xmppMAM?.activate(stream)
}
XMPP 连接后调用 setupMam 函数
func retrieveArchiveMessage(){
let set = XMPPResultSet(max: totalCount)
xmppMAM?.retrieveMessageArchive(at: XMPPJID(string: user), withFields: nil, with: set)
}
func xmppStream(_ sender: XMPPStream, willReceive message: XMPPMessage) -> XMPPMessage? {
if let forwardedMessage = message.mamResult?.forwardedMessage{
debugPrint(forwardedMessage)
return message
}
}
如果你使用罗比汉森框架 https://github.com/robbiehanson/XMPPFramework上面的代码可以完美地从服务器获取值。
我希望这篇文章对你有用@Akash Thakkar
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)