首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iPhone ::xmppframework -检索完整的花名册

iPhone ::xmppframework -检索完整的花名册
EN

Stack Overflow用户
提问于 2011-09-21 07:31:47
回答 2查看 4K关注 0票数 1

我使用xmppframework库在iPhone上实现我的xmpp聊天模块已经进行了一半,这里有一个小问题。

基于一些例子,我是这样做的:-一旦我连接并验证了,在xmppStreamDidAuthenticate委托中,我将发送我的状态。-我将在didReceivePresence代表中收到我的花名册。

问题是,我现在只收到所有在线花名册的存在,而不是离线花名册。如何才能要求提供我的花名册的完整列表?

我发现在XMPPRoster类中有一个fetchRoster方法,但我不知道应该如何调用它,以及接收传入花名册信息的委托应该是什么。

EN

回答 2

Stack Overflow用户

发布于 2013-05-21 18:46:22

要在xmppframework中直接检索花名册,请尝试执行以下操作:

代码语言:javascript
运行
复制
- (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;
}

您将在AppDelegate方法中找到didReceiveIQ。通过这种方式,您将在每次登录时拥有一个完整的花名册列表。接下来,如果您出于某种原因想要刷新此列表,您可以尝试以下操作:

代码语言:javascript
运行
复制
 NSXMLElement *queryElement = [NSXMLElement elementWithName: @"query" xmlns: @"jabber:iq:roster"];

NSXMLElement *iqStanza = [NSXMLElement elementWithName: @"iq"];
[iqStanza addAttributeWithName: @"type" stringValue: @"get"];
[iqStanza addChild: queryElement];

[xmppStream sendElement: iqStanza];
票数 7
EN

Stack Overflow用户

发布于 2011-10-20 14:32:25

看看这对你是否有效。How to list only online users on facebook with xmpp framework经过一些修改,这篇文章中提到的代码应该可以为你工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7493006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档