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

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

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

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

【问题讨论】:

    标签: ios xmpp xmppframework


    【解决方案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) 离线联系人数组。现在我在离线数组中添加所有联系人。现在有什么事件将在线好友从离线数组移动到在线数组。
    • stackoverflow.com/questions/24522526/… .check this methods..如果一些在线/离线,这个方法将被调用。U可以与你的数组进行比较并相应地移动
    • 嗨 Suhail,你能回答我最近问的问题吗?谢谢。
    猜你喜欢
    • 2014-05-28
    • 1970-01-01
    • 2013-11-03
    • 2011-02-21
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多