2014-09-22 162 views
3

我正在使用XMPP进行聊天的一半。我已经注册并登录到ejabberd服务器。如何访问在XMPP ejabberd服务器中使用Rosters的所有用户

我可以在web界面看到有10个注册用户和4个在线用户。但是名册代表没有得到任何联系。

我试过这个解决方案。我没有得到任何结果。

- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq 
{ 
NSXMLElement *queryElement = [iq elementForName: @"query" xmlns: @"jabber:iq:roster"]; 

if (queryElement) { 
NSArray *itemElements = [queryElement elementsForName: @"item"]; 
[ArrayUsers removeAllObjects]; 
for (int i=0; i<[itemElements count]; i++) { 

    NSString *jid=[[[itemElements objectAtIndex:i] attributeForName:@"jid"] stringValue]; 
    [ArrayUsers addObject:jid]; 
} 
} 
return NO; 
} 

可能是什么问题?我必须为此配置服务器设置才能获取联系人信息。默认情况下所有人都可以访问它? 或者,我是否必须进行查询以获取用户详细信息并自动同步到CoreData存储。

任何帮助将不胜感激。

回答

2

问题是在ejabberd配置文件中未启用共享名单模块。你可以在你的ejabberd配置模块部分启用mod_shared_roster(知道该怎么做的人会理解,我个人不知道!所以寻求公司其他人的帮助)。 然后,共享名册选项将在ejabberd服务器管理端的Web界面中可用。

现在配置服务器,以查看所有用户使用下面的链接中可以看出,每体:现在 ejabbered configuration

,如果你已经登录和名册(由RobbieHanson如XMMP框架)的自动同步设置,您将获得列表中的所有用户。

0

创建一个共享名册并从名册中获取所有用户。检查this

相关问题