原理介紹
簡介
XMPP是一種基於標準通用標記語言的子集XML協議,具有超強的可拓展性。經過拓展的XMPP可以通過發送拓展的信息來處理用戶需求。XMPP包含了正對服務端的軟件協議,使之能夠與另一個進行通話。XMPP以Jabber協議爲基礎,而Jabber是即時通訊中常用的開放式協議。目前由IETF國際標準組織完成標準化工作。
標準化的核心分爲兩個部分
- 核心的XML流傳輸協議
- 基於XMLFreeEIM流傳輸的即時通訊擴展應用(這部分支持語音和視頻)
優點:
開放,它是開放源碼的,自由開放公開。
標準化,IETF 互聯網工程工作小組標準化
成熟,第一個jabber技術是在1998年開發的,現在已經相當穩定
開始使用XMPPFramework
本文演示一個運行了XMPPFramework框架的項目demo,這不是一個成熟的應用,僅僅展示了框架的使用方法。本demo僅僅使用了框架的一部分功能。當你決定添加XMPP框架到你自己的IOS應用中,本文將提供詳細的介紹。最好按照流程一步一步來,不要跳過某些步驟。
Setp1:
下載最新的代碼
Step2
框架有幾個依賴的文件,當你把XMPPFramework拿下來的時候,已經自動放在Vendor文件夾下面。我們將把每一個依賴文件過一遍。
第一個依賴包是CocoaLumberjack,它的位置:Vendor/CocoaLumberjack。拖進工程選擇copy,確保項目能夠編譯。
Step3
第二個依賴包是CocoaAsyncSocket,它的位置:Vendor/CocoaAsyncSocket,拖進工程選擇copy。
這個包需要你添加蘋果的CFNetwork framework和Security framework。Target -> Build Phases -> Link Binary With Libraries -> + ->選擇CFNetwork framework和Security framework。添加完後,確保項目能夠編譯。
Step4
第三個依賴包是KissXml,在Vendor/KissXML 可以找到。KissXML使用libxml2,你需要添加蘋果的libxml2庫 到工程文件中。在Targets->BuildSettings->Search Paths-> + ->/usr/include/libxml2。
libxml2.需要你添加蘋果的CFNetwork framework和Security framework。Target -> Build Phases -> Link Binary With Libraries -> + ->選擇libxml2.dylb。
添加完後,確保項目能夠編譯
Step5
第四個,也是最後一個依賴包是LIBLdn,添加下面的三個文件到Xcode工程文件
- Vendor/libidn/idn-int.h
- Vendor/libidn/stringprep.h
- Vendor/libidn/libidn.a
最後一個文件是靜態庫,支持x86*64, i386, ppc, armv6, armv7指令集,因此比較大1.3M。但你的應用打包時,它只會解壓你的應用需要用到的指令集對應的文件,所以不用擔心應用程序文件變大。添加完成後,確保項目能夠編譯。
Step6
添加以下的文件夾到工程中
- Authentication
- Categories
- Core
- Utilities
Target -> Build Phases -> Link Binary With Libraries -> + ->選擇libresolv.dylib,添加完後,確保項目能夠編譯。
現在你已經可以開始使用XMPPFramwork 在你的項目中,
以下頁面你可以瞭解它的使用
https://github.com/robbiehanson/XMPPFramework/wiki/IntroToFramework
————————————————————我是分割線————————————————————
最後吐槽一下這個 XMPP GettingStart 介紹頁, 明明三言兩語就能說清楚的,羅裏吧嗦一大堆。
最後我自己的整理版本是這樣的:
添加以下的文件夾到工程中
- Authentication
- Categories
- Core
- Utilities
添加Vendor下面的CocoaLumberjack、CocoaAsyncSocket、KissXml、LIBLdn文件夾道工程中,選擇copy。
添加蘋果的libxml2庫 到工程文件中。在Targets->BuildSettings->Search Paths-> + ->/usr/include/libxml2
添加蘋果的動態鏈接庫。Target -> Build Phases -> Link Binary With Libraries -> + ->選擇CFNetwork framework、libxml2.dylb、Security framework、libresolv.dylib。
最後確保編譯通過。