xmppframework是XMPP協議的一個objective-c實現.
要了解xmppframework, 從這里開始吧:https://github.com/robbiehanson/XMPPFramework/wiki/IntroToFramework
XMPPFramework中包含了一個簡單的iPhone客戶端實現。
在iPhoneXMPP中。
在測試這個Demo過程中要注意的地方是:
如上圖要設置HostName(如果服務器域名是對外可見的應該不用)。
我測試時,因為我是自己建的openfire服務器,設置的服務器名稱是沒有登記的。
所以需要告訴系統怎么找到這個服務器 -- 在hosts文件中添加ip server
例如:125.216.241.179 scutlab.com
hosts文件的位置:c:\WINDOWS\system32\drivers\etc\hosts (windows) \etc\hosts (mac)
設置完hosts文件后,ping server看看,如果能ping通,說明可以找到服務器了。
另外需要注意的地方是jid一定要是user@example.com的形式
XMPPFramework目前只實現了幾個常用到的擴展。包括
協議 |
協議簡介 |
XEP-0009 |
在兩個XMPP實體間傳輸XML-RPC編碼請求和響應 |
XEP-0006 |
使能與網絡上某個XMPP實體間的通信 |
XEP-0045 |
多人聊天相關協議 |
XEP-0054 |
名片格式的標准文檔 |
XEP-0060 |
提供通用公共訂閱功能 |
XEP-0065 |
兩個XMPP用戶之間建立一個帶外流,主要用於文件傳輸 |
XEP-0082 |
日期和時間信息的標准化表示 |
XEP-0085 |
聊天對話中通知用戶狀態 |
XEP-0100 |
表述了XMPP客戶端與提供傳統的IM服務的代理網關之間交換的最佳實踐 |
XEP-0115 |
廣播和動態發現客戶端、設備、或一般實體能力。 |
XEP-0136 |
為服務端備份和檢索XMPP消息定義機制和偏好設置 |
XEP-0153 |
用於交換用戶頭像 |
XEP-0184 |
消息送達回執協議 |
XEP-0199 |
XMPP ping 協議 |
XEP-0202 |
用於交換實體間的本地時間信息 |
XEP-0203 |
用於延遲發送 |
XEP-0224 |
引起另一個用戶注意的協議 |
一份很好的教程:Building a Jabber Client for iOS
開發中常要涉及到XML的操作,這是NSXMLElement API文檔 https://developer.apple.com/library/mac/#documentation/cocoa/reference/Foundation/Classes/NSXMLElement_Class/Reference/Reference.html