gpt4 book ai didi

ios - 在 ios 中从 XMPP 服务器检索存档消息

转载 作者:可可西里 更新时间:2023-11-01 03:21:27 25 4
gpt4 key购买 nike

我正在将 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
}
}

如果您使用 Robbiehanson framework上面的代码非常适合从服务器获取值。

我希望这篇文章对你有用@Akash Thakkar

关于ios - 在 ios 中从 XMPP 服务器检索存档消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14279249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com