標籤:xmpp ios git 即時通訊
XMPP架構地址:http://xmpp.org/xmpp-software/libraries/
?https://github.com/robbiehanson/XMPPFramework?
預計要實現的功能:
?使用者登入、註冊?相互添加好友 Roster(花名冊)?好友之間的聊天?表情文字(CoreText)?聊天狀態 XEP-0085(線上、離開、請 勿打擾)?聊天室群聊 XEP-0045?傳送檔案 XEP-0096?語音交談 XEP-0065(本地錄音、發送音頻、播放)
XMPPMaster解壓縮後目錄
建立新的XCode空白項目,並勾選Git on my mac
直接在XCode項目中建立一個新的Lib檔案夾
1.匯入依賴架構–CocoaLumberjack:日誌架構(Log)–CocoaAsyncSocket:底層網路架構?需要添加CFNetwork&Security架構依賴–KissXML:XML解析架構?需要添加libxml2.dylib架構依賴?需要指定如下編譯選項:
OTHER_LDFLAGS =-lxml2
HEADER_SEARCH_PATHS =/usr/include/libxml2
–匯入檔案夾libidn
?將以下4個檔案夾匯入到項目–Authentication–Categories–Core–Utilities??另外還需要添加libresolv.dylib依賴
?匯入XMPP擴充架構 檔案夾–Extensions
?將Sample_XMPPFramework.h添加到項目,並且重新命名為XMPPFramework.h??在終端輸入:
git commit -m “添加XMPP架構”
?可以一次性提交所有增加的檔案
?XEP-0045:多使用者聊天?XEP-0060:發布-訂閱?XEP-0065:SOCKS5位元組流?XEP-0085: 聊天狀態通知?XEP-0096:檔案傳輸?XEP-0172:使用者暱稱?CoreDataStorage: 資料存放區?Reconnect:重新串連?Roster:花名冊所有的XMPP擴充?http://xmpp.org/xmpp-protocols/xmpp-extensions/
?XMPPStream:是開發過程中最主要互動的類,所有擴充和自訂代碼均要基於此類進行?XMPPLogging:XMPP的日誌架構
?XMPPParser:供XMPPStream解析使用?XMPPJID:提供了一個不可變JID的實現,遵守NSCopying協議和NSCoding協議
?XMPPElement:以下三個XMPP元素的基類?XMPPIQ :請求?XMPPMessage :訊息?XMPPPresence :出席(上線)
?XMPPModule:開發XMPP擴充時使用?XMPPInternal:整個XMPP架構內部使用的核心和進階底層內容
1.配置串連至XMPP伺服器2.添加代理3.添加模組4.開始串連5.開始授權
?注意:–XMPP架構僅提供了一個最小的代理委託系統用於接收三種XMPP類型(IQ、Message和Presence),如果要實現更多的功能,開發人員還需要編寫大量的相關代碼–為了簡化開發,通常將XMPPStream放置在AppDelegate中,以便於全域訪問
?XMPPReconnect:如果意外中斷,自動重連XMPP流?XMPPRoster:標準的XMPP花名冊?XMPPRoom:提供多人聊天支援(聊天室)?XMPPPubSub:提供公用訂閱支援?etc
?使用XMPP的即時訊息傳遞系統包含三大通訊類別:–訊息傳遞,其中資料在有關各方之間傳輸–聯機狀態,允許使用者廣播其線上狀態和可用性–資訊/查詢請求,它允許XMPP實體發起請求並從另一個實體接收響應
?以上三種類型的XMPP節都擁有以下公用屬性:–from:源XMPP實體的JID–to:目標接收者的JID–id:目前的交談的可選標識符–type:節的可選子類型–xml:lang:如果內容是人們可讀的,則為訊息語言的描述
匯入CFNetwork.framework和Security.framework
匯入KissXML(相當麻煩)
添加libxml2的標頭檔路徑,不然,KissXML無法工作
至此,Vendor(小販、賣主)匯入完畢
再將XMPP的4個基礎架構匯入至項目 (除了Extensions)
暫時用不到的擴充們
最後,還要匯入libresolv.dylib
不算擴充,最終結果
Git提交單個檔案
更好的做法是:命令列中,切換到工程路徑,一次性提交所有的(新增或修改的檔案)git commit -m "對本次操作的一些備忘"
全部提交後,XCode檔案右邊的A(add)就不見了
iOS_32_XMPPFramework架構匯入