日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

【iOS XMPP】使用XMPPFramewok(五):好友列表

發(fā)布時(shí)間:2024/9/30 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【iOS XMPP】使用XMPPFramewok(五):好友列表 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

好友列表

?

好友列表,在 XMPP 中被稱為 roster,花名冊(cè)?

獲取 roster 需要客戶端發(fā)送 <iq /> 標(biāo)簽向 XMPP 服務(wù)器端查詢

?

一個(gè) IQ 請(qǐng)求:

<iq type="get"

  from="xiaoming@example.com"

  to="example.com"

  id="1234567">

  <query xmlns="jabber:iq:roster"/>

<iq />

type 屬性,說(shuō)明了該 iq 的類型為 get,與 HTTP 類似,向服務(wù)器端請(qǐng)求信息

from 屬性,消息來(lái)源,這里是你的 JID

to 屬性,消息目標(biāo),這里是服務(wù)器域名

id 屬性,標(biāo)記該請(qǐng)求 ID,當(dāng)服務(wù)器處理完畢請(qǐng)求 get 類型的 iq 后,響應(yīng)的 result 類型 iq 的 ID 與 請(qǐng)求 iq 的 ID 相同

<query xmlns="jabber:iq:roster"/> 子標(biāo)簽,說(shuō)明了客戶端需要查詢 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]; }

?

一個(gè) IQ 響應(yīng):

<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="小強(qiáng)"/>

  <query />

<iq />

type 屬性,說(shuō)明了該 iq 的類型為 result,查詢的結(jié)果

<query xmlns="jabber:iq:roster"/> 標(biāo)簽的子標(biāo)簽 <item />,為查詢的子項(xiàng),即為 roster

item 標(biāo)簽的屬性,包含好友的 JID,和其它可選的屬性,例如昵稱等。

?

通過(guò)實(shí)現(xiàn)

- (BOOL)xmppStream:(XMPPStream?*)sender didReceiveIQ:(XMPPIQ?*)iq;

方法

當(dāng)接收到 <iq /> 標(biāo)簽的內(nèi)容時(shí),XMPPFramework 框架回調(diào)該方法

- (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];}}} }

總結(jié)

以上是生活随笔為你收集整理的【iOS XMPP】使用XMPPFramewok(五):好友列表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。