如何通过XMPP服务器检查特定用户在线/离线状态的存在

时间:2016-03-22 16:02:12

标签: ios xmpp chat xmppframework

我正在构建一个应用程序,我需要查找过去曾与之交换过邮件的用户的在线/离线状态。并非服务器上的所有用户都可用。提前谢谢。

3 个答案:

答案 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