2014-04-08 33 views
1

我如何得到任何具有用户id的特定用户的存在。存在与用户ID XMPP框架

我的意思是说,没有在名单中添加该用户。

请帮我解决这个问题。

在此先感谢。

回答

2

我假设你在谈论iOS XMPPFramework。如果没有,请忽略此答案。 您可以发送定向的存在给其他用户是这样的:

XMPPPresence *presence = [[XMPPPresence alloc] initWithType:@"probe" to:someJid]; 
[_xmppStream sendElement:presence]; 

凡_xmppStream是一个开放的,连接XMPPStream。

但是,请注意,如果其他用户不在您的名单中,大多数XMPP服务器将不允许回复此类指导性状态。如果您正在管理自己的XMPP服务器,则可以对其进行修改以允许执行此类操作。

+0

好的,谢谢你的帮助。 –

0

您可以通过以下网址插件呼叫索要任何用户存在

的http:// {服务器}:9090 /插件/存在/状态JID = USERID @服务器&类型=文本

EX:

[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://SERVER_NAME:9090/plugins/presence/[email protected]_NAME&type=text"]] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 

      if(connectionError==nil) 
       NSLog(@"plugins response ===%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); 

     }]; 

它会返回 “在线” foractive用户和 “unavailble” 脱机用户。 请注意图像中显示的openfire服务器上的服务器设置。enter image description here

+0

当用户离线时,我得到“不可用”,但 当该用户变为在线时变为“空”。 –

+0

它不应该是这样..让我再次检查我的代码。 – cjd

+0

我用我的代码测试过,似乎工作。请检查服务器名称并首先在浏览器上运行http:// {SERVER_NAME}:9090/plugins/presence/status?jid = USERID @ SERVER_NAME&type = text以检查 – cjd