我正在开发一个应用程序,需要查找我过去与之交流信息的用户的在线/离线状态,而不是服务器上所有可用的用户。谢谢。
let query = XMLElement(name: "query", xmlns: "jabber:iq:last")
let streamUUID = self.xmppStream.generateUUID()
let iq = XMPPIQ(type: "get", to: XMPPJID(string: jid) , elementID: streamUUID , child: query)
self.xmppStream.send(iq)
return streamUUID!
然后,在XMPPStreamDelegate协议中有一个名为“didReceive iq:”的委托方法,您需要在此方法中提供处理IQ结果的函数,如下所示:
func xmppStream(_ sender: XMPPStream!, didReceive iq: XMPPIQ!) -> Bool {
if iq.isResultIQ() {
iq.lastActivitySeconds() == 0{
print("user is online")
}else{
print("user is offline")
}
}
return false
}
存在状态是广播的,因此只有在其“发生”时才会接收到它们。在远程服务器(S2S,即服务器对服务器)的上下文中存在存在状态探针。但是没有轮询。