我正在构建一个应用程序,我需要查找过去曾与之交换过邮件的用户的在线/离线状态。并非服务器上的所有用户都可用。提前谢谢。
答案 0 :(得分:1)
- 您可以使用XMPPIQ获取特定用户的在线/离线状态 您需要使用'type get'创建XMPPIQ,如下所示
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
}
答案 1 :(得分:0)
存在是广播,所以你只是在“发生”时收到它们。在远程服务器(S2S,服务器到服务器)的上下文中存在存在探测器。但是没有民意调查。
答案 2 :(得分:0)
要将存在(由Nyco提及)推送到客户端,您必须订阅其他用户的存在。这里描述了:http://xmpp.org/rfcs/rfc6121.html#sub