我正在使用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存储。
非常感谢任何帮助。
答案 0 :(得分:2)
问题是ejabberd配置文件中未启用共享名册模块。您可以在ejabberd配置模块部分启用mod_shared_roster
(知道该怎么做的人会理解。我个人不知道!所以寻求公司其他人的帮助)。
然后,共享的Roster选项将在ejabberd服务器的管理员端的Web界面中提供。
现在使用以下链接配置服务器以查看每个正在查看的所有用户: ejabbered configuration
现在,如果您已登录并设置Roster的自动同步(RobbieHanson Eg的XMMP框架),您将获得列表中的所有用户。
答案 1 :(得分:0)
创建一个共享名册并从名册中获取所有用户。查看this