XMPPFramework - 如何在“didReceiveIQ”中识别响应是不是是用户的联系人列表?

Posted

技术标签:

【中文标题】XMPPFramework - 如何在“didReceiveIQ”中识别响应是不是是用户的联系人列表?【英文标题】:XMPPFramework - How to identify in 'didReceiveIQ' whether response is user's contactList?XMPPFramework - 如何在“didReceiveIQ”中识别响应是否是用户的联系人列表? 【发布时间】:2014-07-04 04:46:34 【问题描述】:

我正在向我的 jabber 服务器发送请求以获取我的联系人列表。

现在我的问题是didReceiveIQ 方法被多次调用。

那么我怎么能确定当 didReciveIQ 被调用时,它应该是我的联系人列表。

【问题讨论】:

【参考方案1】:

用于从 jabber 服务器获取联系人列表

-(void)fetchRosterListWithUserId:(NSString *)userId // yourID
    
        NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:@"jabber:iq:roster"];
        XMPPIQ *iq = [XMPPIQ iq];
        [iq addAttributeWithName:@"id" stringValue:FETCH_ROSTER_DISCO_ID];
        [iq addAttributeWithName:@"to" stringValue:userId];
        [iq addAttributeWithName:@"type" stringValue:@"get"];
        [iq addChild:query];
        [_xmppStream sendElement:iq];

你可以得到回复

 - (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq
    
       // You can identify the response by using @"id"
        if([[iq attributeStringValueForName:@"id"] isEqualToString:FETCH_ROSTER_DISCO_ID])
        
                //Extract contact list from response here
        
    

【讨论】:

谢谢。是否必须发送出席信息?如果是,那么如何做到这一点以及如何管理我的离线和在线名册。你能帮帮我吗? 我对存在感不太关心。我使用我为您之前的问题提供答案的方法处理在线/离线 听着,现在我已经创建了两个数组 (1) 用于在线联系。 (2) 离线联系人数组。现在我在离线数组中添加所有联系人。现在有什么事件将在线好友从离线数组移动到在线数组。 ***.com/questions/24522526/… .check this methods..如果一些在线/离线,这个方法将被调用。U可以与你的数组进行比较并相应地移动 嗨 Suhail,你能回答我最近问的问题吗?谢谢。

以上是关于XMPPFramework - 如何在“didReceiveIQ”中识别响应是不是是用户的联系人列表?的主要内容,如果未能解决你的问题,请参考以下文章

XMPPFramework - 如何获取在线和离线好友列表?

XMPPFramework - 如何在“didReceiveIQ”中识别响应是不是是用户的联系人列表?

XMPPFramework - 如何接收名册的存在信息以及名册列表?

如何在目标c中通过ios中的XMPPFramework连接XMPP服务器

XMPPFramework - 如何向 XMPPUserCoreDataStorageObject 添加自定义属性?

如何在iOS的XMPPFramework中实现发送好友请求的方式?