【iOS XMPP】使用XMPPFramewok(五):好友列表
来源:互联网 发布:淘宝卖的生发液有用吗 编辑:程序博客网 时间:2024/05/06 03:10
好友列表
好友列表,在 XMPP 中被称为 roster,花名册?
获取 roster 需要客户端发送 <iq /> 标签向 XMPP 服务器端查询
一个 IQ 请求:
<iq type="get"
from="xiaoming@example.com"
to="example.com"
id="1234567">
<query xmlns="jabber:iq:roster"/>
<iq />
type 属性,说明了该 iq 的类型为 get,与 HTTP 类似,向服务器端请求信息
from 属性,消息来源,这里是你的 JID
to 属性,消息目标,这里是服务器域名
id 属性,标记该请求 ID,当服务器处理完毕请求 get 类型的 iq 后,响应的 result 类型 iq 的 ID 与 请求 iq 的 ID 相同
<query xmlns="jabber:iq:roster"/> 子标签,说明了客户端需要查询 roster
- (void)queryRoster { NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:@"jabber:iq:roster"]; NSXMLElement *iq = [NSXMLElement elementWithName:@"iq"]; XMPPJID *myJID = self.xmppStream.myJID; [iq addAttributeWithName:@"from" stringValue:myJID.description]; [iq addAttributeWithName:@"to" stringValue:myJID.domain]; [iq addAttributeWithName:@"id" stringValue:[self generateID]]; [iq addAttributeWithName:@"type" stringValue:@"get"]; [iq addChild:query]; [self.xmppStream sendElement:iq];}
一个 IQ 响应:
<iq type="result"
id="1234567"
to="xiaoming@example.com">
<query xmlns="jabber:iq:roster">
<item jid="xiaoyan@example.com" name="小燕" />
<item jid="xiaoqiang@example.com" name="小强"/>
<query />
<iq />
type 属性,说明了该 iq 的类型为 result,查询的结果
<query xmlns="jabber:iq:roster"/> 标签的子标签 <item />,为查询的子项,即为 roster
item 标签的属性,包含好友的 JID,和其它可选的属性,例如昵称等。
通过实现
- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq;
方法
当接收到 <iq /> 标签的内容时,XMPPFramework 框架回调该方法
- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq { if ([@"result" isEqualToString:iq.type]) { NSXMLElement *query = iq.childElement; if ([@"query" isEqualToString:query.name]) { NSArray *items = [query children]; for (NSXMLElement *item in items) { NSString *jid = [item attributeStringValueForName:@"jid"]; XMPPJID *xmppJID = [XMPPJID jidWithString:jid]; [self.roster addObject:xmppJID]; } } }}
- 【iOS XMPP】使用XMPPFramewok(五):好友列表
- 【iOS XMPP】使用XMPPFramewok(五):好友列表
- 【iOS XMPP】使用XMPPFramewok(五):好友列表
- 【iOS XMPP】使用XMPPFramewok(五):好友列表
- 【iOS XMPP】使用XMPPFramewok(五):好友列表
- 【iOS XMPP】使用XMPPFramewok(五):好友列表
- 【iOS XMPP】使用XMPPFramewok(五):好友列表
- 【iOS XMPP】使用XMPPFramewok(三):好友状态
- 【iOS XMPP】使用XMPPFramewok(三):好友状态
- 【iOS XMPP】使用XMPPFramewok(三):好友状态
- 【iOS XMPP】使用XMPPFramewok(三):好友状态
- 【iOS XMPP】使用XMPPFramewok(三):好友状态
- 【iOS XMPP】使用XMPPFramewok(三):好友状态
- 【iOS XMPP】使用XMPPFramewok(二):用户登录
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- 【iOS XMPP】使用XMPPFramewok(二):用户登录
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- weak_ptr 弱引用打破智能指针中循环引用造成的内存泄露
- CentOS 6.4开机启动服务及自动联网
- JAVA调用Shell脚本
- gcc -l参数和-L参数
- Is Oracle Application Server End-of-Life?
- 【iOS XMPP】使用XMPPFramewok(五):好友列表
- 头文件说明
- 通向架构师的道路(第九天)之weblogic的集群与配置
- flex3+struts2+spring3+hibernate3+mysql5+tomcat6项目实例
- Top Five Ways SpiderLabs Got Domain Admin on Your Internal Network »
- solr 与mysql 集成
- Android解析Json数据(二)—使用反射机制
- hdu 1257 DP
- PyQt4 精彩实例分析* 实例20 窗体的淡入淡出效果