xmpp 框架 - 检测更改的花名册列表

Posted

技术标签:

【中文标题】xmpp 框架 - 检测更改的花名册列表【英文标题】:xmpp Framework - detection of changing roster list 【发布时间】:2014-03-10 12:07:30 【问题描述】:

我如何检测到我的花名册列表已更改,添加或删除了某些成员?

我使用该代码在启动时获取名册列表

- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq

DDLogVerbose(@"%@: %@ - %@", THIS_FILE, THIS_METHOD, [iq elementID]);

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);

【问题讨论】:

【参考方案1】:

1) 所有后续名册更改都将通过包含“jabber:iq:roster”有效负载的 IQ 数据包“推送”给您,您需要跟踪收到项目的“订阅”属性并对模型进行更改。 2) XMPPFramework 已经包含 XMPPRoster 扩展,它为您完成所有工作,只需激活扩展,请参阅 XMPPFramework 示例。

【讨论】:

以上是关于xmpp 框架 - 检测更改的花名册列表的主要内容,如果未能解决你的问题,请参考以下文章

动态 XMPP 名册?

XMPP名册存在

无法从 xmpphp 获取用户列表(名册)

如何在 XMPP 中阻止匿名用户

XMPP - 名册订阅说明

在登录时检索一个人的名册联系人列表