如何在XMPP ejabberd服务器中使用Rosters访问所有用户

时间:2014-09-22 06:56:41

标签: xmpp ejabberd xmppframework

我正在使用XMPP进行聊天。我已注册并登录ejabberd服务器。

我在网络界面中可以看到有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 个答案:

答案 0 :(得分:2)

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

现在使用以下链接配置服务器以查看每个正在查看的所有用户: ejabbered configuration

现在,如果您已登录并设置Roster的自动同步(RobbieHanson Eg的XMMP框架),您将获得列表中的所有用户。

答案 1 :(得分:0)

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