xmpp學習使用簡單介紹(一)

 自己學習xmpp官方文檔,慢慢整理的筆記,不見得都是正確的,請用選擇性眼光看待,也有問題尚未解決,持續更新中~~~

 

 

 

創建新工程,命名爲XMPPIOS.

 

 

 

一:導入XMPPFramework

 

 

將XMPP拖拽到工程中。

 

添加靜態庫

 

 

 

 

並在Build Settings中設置如下

 

 

 

 

此時Run一下,成功,證明導入正確。

注意:XMPP使用了ARC,Edit -> Refactor -> convert to Objective-C ARC,轉換。

頭文件也可以自己創建,內容是需要import的頭文件,可以根據自己的需求來確定。

------------------------------------------------可愛的分界線------------------------------------------------------------------

 

 

:連接和註冊 XEP-0077  XEP-0020

 

 

 

 

拖拽相應控件到頁面中。

在appdelegate.h中創建相應屬性

 

.m

 

這裏創建xmpp的地方比官方的demo少了很多,主要是因爲開始使用的時候個人認爲並不用那麼多變量,之後會一點一點添加。

添加創建連接方法

 

創建連接成功後,兩個代理方法調用,分別爲

- (void)xmppStreamWillConnect:(XMPPStream *)sender

- (void)xmppStreamDidConnect:(XMPPStream *)sender

此時添加註冊的代碼

 

如果註冊成功,調用如下代理方法

- (void)xmppStreamDidRegister:(XMPPStream *)sender

現在看看後臺openfire中已經存在註冊的用戶了。

如果沒有註冊成功則調用

- (void)xmppStream:(XMPPStream *)sender didNotRegister:(NSXMLElement *)error

如果發現如下錯誤

<iq xmlns="jabber:client" type="error" to="saas.kanyabao.com/213e75ed"><query xmlns="jabber:iq:register"><username>dawn</username><password>1111</password></query><error code="409" type="cancel"><conflict xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>

則是因爲當前的用戶已經存在。

然後在- (void)xmppStreamDidRegister:(XMPPStream *)sender

 

 

 

 

 

爲當前用戶做認證,如果認證成功,則調用

- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender

否則調用

- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error

此時,當前用戶已經與後臺openfire連接,但是在openfire中,當前用的狀態是未登錄狀態,所以此時,當前用戶發送狀態告知後臺,這樣其他的用戶才能收到當前用戶的上線通知。

所以,在

- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender

方法中添加如下代碼

    XMPPPresence *presence = [XMPPPresencepresence];

[[self xmppStream] sendElement:presence];

再次run,刷新open fire  發現當前用戶的狀態已經是上線了

 

注意:註冊之前要創建連接,否則會報"Please wait until the stream is connected"的錯誤

            連接或者註冊後需要做一次認證,併發送一個上線的消息,否則後臺和其他用戶都無法收到當前用戶的上線消息,後臺openfire中看到的當前用戶是灰色的離線狀態。

            註冊之後如果要再次建立連接,最好斷開後再創建,否則會報"Attempting to connect while already connected or connecting"的錯誤。


博客來源:http://www.cnblogs.com/PhenixWang/p/3275454.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章