我使用该代码来获取它
- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq
NSXMLElement *queryElement = [iq elementForName: @"query" xmlns: @"jabber:iq:roster"];
if (queryElement)
{
NSArray *itemElements = [queryElement elementsForName: @"item"];
[self.cts removeAllObjects];
for (int i=0; i<[itemElements count]; i++)
{
NSString *jid = [[[itemElements objectAtIndex:i] attributeForName:@"jid"] stringValue];
[self.cts addObject:jid];
}
NSLog(@"\nRoster ID's %@",self.cts);
}
问题是,首先我得到名单,但如果它改变了,我只得到被删除或添加到名单列表中的用户的jID。我的目的是获得完整的当前名单。我该怎么做?
答案 0 :(得分:0)
由于您似乎正在使用XMPPFramework - 通常情况下,附加信息将在需要时通过vCard进入。
如果使用名单的CoreData部分(XMPPRosterCoreDataStorage),并且您有自动获取的名单,您应该获得完整的名单(取决于您使用的服务器),并在需要时为该用户提供vCard(获取其余信息。)
如果你需要每次都获得一个完整的,你可以手动告诉它([xmppRoster fetchRoster],它会请求一个完整的(查询类型获取)。你也可以跟踪这些iq到知道你何时收到了对请求的回复(使用XMPPIDTracker)。