【问题标题】:Get Xmpp roster list获取 Xmpp 名册列表
【发布时间】:2014-04-12 10:29:54
【问题描述】:

我使用该代码来获取它

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

【问题讨论】:

  • 不清楚你在问什么。请提供样本输入和预期输出。另外,这与 CoreData 有什么关系?
  • @Dan Shelly,我的目的是为我的请求获取当前用户的名册列表或将其放在持久位置
  • @Dan Shelly,我正在寻找使用核心数据的方法 - 从中​​加载名册列表
  • 通过提供简单的输入和预期的输出来描述您的问题,否则您的问题(如我所见)被简化为在 CoreData 中存储一个数组,这很可能是重复的

标签: ios iphone xcode xmpp xmppframework


【解决方案1】:

因为您似乎正在使用 XMPPFramework - 通常额外信息会在需要时通过 vCard 进入。

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

如果您每次都需要获取完整的,您可以告诉它手动获取([xmppRoster fetchRoster],它会请求完整的(查询类型获取)。您还可以跟踪这些 iq 以了解何时有收到对请求的响应(使用 XMPPIDTracker)。

【讨论】:

    猜你喜欢
    • 2014-07-27
    • 2015-05-24
    • 2016-01-30
    • 2015-12-25
    • 2015-09-19
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多