xmpp开发教程(四)-获取好友列表

这章节主要是介绍如何获取好友列表,在这里主要是做功能部分,后续更新的时候就将界面也做上去

首先提供下核心代码

1  xmppRosterStorage = [[XMPPRosterCoreDataStorage alloc] init];
2         //    xmppRosterStorage = [[XMPPRosterCoreDataStorage alloc] initWithInMemoryStore];
3
4         xmppRoster = [[XMPPRoster alloc] initWithRosterStorage:xmppRosterStorage];
5
6         xmppRoster.autoFetchRoster = YES;
7         xmppRoster.autoAcceptKnownPresenceSubscriptionRequests = YES;
8         [xmppRoster            activate:xmppStream];
9         [xmppRoster addDelegate:self delegateQueue:dispatch_get_main_queue()];

这段代码上个章节已经介绍过了,主要是获取好友信息,这个时候它会回调

 1 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 2 #pragma mark ReceiveIQ
 3 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 4
 5 - (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq
 6 {
 7     NSLog(@"%@: %@", THIS_FILE, THIS_METHOD);
 8
 9     if ([@"result" isEqualToString:iq.type]) {
10         NSXMLElement *query = iq.childElement;
11         if ([@"query" isEqualToString:query.name]) {
12             NSArray *items = [query children];
13             for (NSXMLElement *item in items) {
14                 NSString *jid = [item attributeStringValueForName:@"jid"];
15                 XMPPJID *xmppJID = [XMPPJID jidWithString:jid];
16                 [self.roster addObject:xmppJID];
17             }
18         }
19     }
20
21     return NO;
22 }

我们将获取的好友信息变存在self.roster这个数组中了。

时间: 2024-10-12 22:07:58

xmpp开发教程(四)-获取好友列表的相关文章

XMPP系列(三)---获取好友列表、添加好友

1.心跳检测.掉线重连功能 客户端和服务器端都可以设置多久发送一次心跳包,如果对方没有返回正确的pong信息,则会断开连接,而添加掉线重连功能,则会自动进行连接. 如果自己写聊天功能还得自己做心跳检测和掉线重连,比较麻烦.好在XMPP中已经做了心跳检测和掉线重连的模块,只需要几行代码加进去就能实现掉线重连,非常方便. XMPP中Extensions文件下都是可以自己添加的Module,它们都继承自XMPPModule,而添加的方法也非常的简单: <span style="font-size

一步一步来做WebQQ机器人-(四)(获取好友列表和群列表)

× 本篇主要是: 获取好友列表,群列表 我会尽量详细一点,尽我所知的分享一些可能大家已经掌握的或者还不清楚的经验 利于大家阅读,文章样式不再复杂化,根据内容取固定色 目前总进度大概65% 全系列预计会有这些步骤,当然某些步骤可能会合并: 验证码 第一次登陆 第二次登陆 保持在线和接收消息 获取好友和群列表 发送消息 变成智能的(*?∀?*) 获取好友 1-获取QQ好友的hash算法 P = function (b, j) { for (var a = j + "password error&qu

XMPP开发之获取好友列表

前面在<XMPP开发之adium客户端登陆>中和大家分享了登录的代码和常遇到的问题.几天和大家分享获取好友列表以及相关的问题. 说到获取好友列表,那么很有必要说一下首先网站上gitHub上给出的demo其实是有点问题的,主要就是coredata的文件,有问题,刚开始一直报错,存取都失败,后来发现了我按照他们原来的字段重新建了一个coredata的文件,另外由于这里只是一个demo所以知识简单的实现了好友从a~z的排序,还有就是分组还没有实现,这个等以后把这一块完善后和大家分享下. 如果要有好友

微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo

原文:微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 前几章中我讲解了微信开发平台提供第三方平台的好处,和使用流程,如果你看了我的文章相信你对开放平台有了初步的了解,但是在实际的开发过程

【iOS XMPP】使用XMPPFramewok之好友列表

好友列表 好友列表,在 XMPP 中被称为 roster,花名册? 获取 roster 需要客户端发送 <iq /> 标签向 XMPP 服务器端查询 一个 IQ 请求: <iq type="get" from="[email protected]" to="example.com" id="1234567"> <query xmlns="jabber:iq:roster"/&g

xmpp开发教程(六)-添加和删除好友

这章开发添加和删除好友的模块,首先列出里面主要的方法: 1 [_xmppRoster fetchRoster];//获取好友列表 2 3 //获取到一个好友节点 4 - (void)xmppRoster:(XMPPRoster *)sender didRecieveRosterItem:(NSXMLElement *)item 5 6 //获取完好友列表 7 - (void)xmppRosterDidEndPopulating:(XMPPRoster *)sender 8 9 //到服务器上请求

公众号第三方平台开发 教程四 代公众号处理消息和事件

公众号第三方平台开发 教程一 创建公众号第三方平台 公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取 公众号第三方平台开发 教程三 微信公众号授权第三方平台 公众号第三方平台开发 教程四 代公众号发起网页授权说明 公众号第三方平台开发 教程五 代公众号处理消息和事件 公众号第三方平台开发 教程六 代公众号使用JS SDK说明 另,感谢一下这个大虾的博客,这几篇东西都是在他的博文基础上完成的,他的博客里也有一些接口代码可以下载 微信开发系列

xmpp开发教程(三)-连接和认证

从这章节开始,我将手把手的操作如何实现聊天里面的一些基本功能,从容易向高难度的过渡,这也是我编写程序的基本方法. 这章我们要研究的是连接和认证两个操作. 首先献上代码 1 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 2 #pragma mark Connect/disconnect 3 ///////

【iOS开发-67】QQ好友列表案例:UITableViewHeaderFooterView类、layoutSubviews与didMoveToSuperView方法等

(1)效果 (2)源代码于素材下载 http://pan.baidu.com/s/1jfdr4 (3)总结 --有标记状态的属性,应该在对应的模型类中,并且把getter方法重命名为isXXX: --UITableViewHeaderFooterView不可以用xib,只能用代码创建. --layoutSubviews方法,是当改变父控件高度的时候,自动调用这个方法,所以一般在这里面设置子控件的frame.因为子控件随着父控件而改变.这里要注意的时,初始化方法中父控件没有frame,所以子控件设