【iOS XMPP】使用XMPPFramewok(五):好友列表
来源:互联网 发布:宜宾零距离网络 编辑:程序博客网 时间:2024/05/18 00:41
好友列表
好友列表,在 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(四):收发消息
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- VIM入门
- GCD(一)
- 黑马程序员——01Java基本数据类型小知识点
- 获得CODE39检查码的几个步骤及特性综合说明
- 【iOS XMPP】使用XMPPFramewok(五):好友列表
- 【Android】 Android开发优化之——对界面UI的优化(2)
- VideoView大小屏幕切换的总结
- 移植 tiny210 的按键驱动
- window下工具访问linux下mysql出现 error no 2003 10061错误的解决办法
- C++资源管理————————在资源管理类中小心copying行为
- linux关于消息队列中消息的大小的限制
- 【Android】 Android开发优化之——对界面UI的优化(3)
- 深入分析:Android中app之间的交互(一,使用Action)