获取Xmpp名单

时间:2014-03-09 10:44:12

标签: ios iphone xcode xmpp xmppframework

我使用该代码来获取它

- (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。我的目的是获得完整的当前名单。我该怎么做?

1 个答案:

答案 0 :(得分:0)

由于您似乎正在使用XMPPFramework - 通常情况下,附加信息将在需要时通过vCard进入。

如果使用名单的CoreData部分(XMPPRosterCoreDataStorage),并且您有自动获取的名单,您应该获得完整的名单(取决于您使用的服务器),并在需要时为该用户提供vCard(获取其余信息。)

如果你需要每次都获得一个完整的,你可以手动告诉它([xmppRoster fetchRoster],它会请求一个完整的(查询类型获取)。你也可以跟踪这些iq到知道你何时收到了对请求的回复(使用XMPPIDTracker)。