如何使用XMPP ejabberd服务器的花名册访问所有用户

3

我正在使用XMPP进行聊天功能的开发。我已经成功注册并登录到ejabberd服务器。

在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个回答

2
问题在于ejabberd配置文件中未启用共享花名册模块。您只需在ejabberd配置模块部分启用mod_shared_roster(知道如何操作的人会理解,我个人不知道!所以向公司其他人寻求帮助)。 然后,在ejabberd服务器管理端的Web界面中将可用共享花名册选项。 现在,请使用以下链接配置服务器,以便所有用户都能被其他人看到: ejabberd配置 现在,如果您已登录并设置了Roster的自动同步(由RobbieHanson Eg提供的XMMP框架),则会在列表中收到所有用户的信息。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接