gpt4 book ai didi

ios - 如何使用 xmppframework 在 XMPP 中检索我自己最后发送的消息?

转载 作者:行者123 更新时间:2023-11-28 14:29:57 27 4
gpt4 key购买 nike

我想检索我在 XMPP 中发送给某人的最后一条消息。
我已经编写了这段代码,但它会获取所有已发送的消息:

let query = try? XMLElement(xmlString: "<query xmlns='urn:xmpp:mam:2'/>")
let iq = XMLElement.element(withName: "iq") as? XMLElement
iq?.addAttribute(withName: "type", stringValue: "set")
iq?.addAttribute(withName: "from", stringValue: "f.talebi@x.ir")
iq?.addAttribute(withName: "max", stringValue: "1")
iq?.addAttribute(withName: "id", stringValue: "GetLastUserMessage")


if let aQuery = query {
iq?.addChild(aQuery)
}

xmppStream.send(iq!)

最佳答案

首先你应该有 xmppMessageArchiveManagement 模块:

var xmppMAM: XMPPMessageArchiveManagement!

然后激活它

xmppMAM.activate(xmppStream)

之后就可以使用xmppMessageArchiveManagementDelegate的协议(protocol)函数了

扩展 someClass:XMPPMessageArchiveManagementDelegate {
func xmppMessageArchiveManagement(_ xmppMessageArchiveManagement:XMPPMessageArchiveManagement,didReceiveMAMMessage 消息:XMPPMessage){
}
func xmppMessageArchiveManagement(_ xmppMessageArchiveManagement: XMPPMessageArchiveManagement, didFinishReceivingMessagesWith resultSet: XMPPResultSet) {
}
}

现在你可以创建数据包并发送它们,上面的两个函数将捕获服务器的数据包:警告:您应该使用 mam:1 而不是 mam:2 并使用 messageArchiveManagement 进行所有检索任务。示例:检索最后一条消息构建此数据包并使用 mam 发送它。

`let value = DDXMLElement(name: "value", stringValue: youJid)
let child = DDXMLElement(name: "field")
child.addChild(value)
child.addAttribute(withName: "var", stringValue: "with")
let set = XMPPResultSet(max: 1, before: "")
xmppMam.retrieveMessageArchive(at: nil, withFields: [child], with: set)`

关于ios - 如何使用 xmppframework 在 XMPP 中检索我自己最后发送的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51335779/

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