基于XMPP構(gòu)建的iOS即時(shí)通訊項(xiàng)目

前言:

項(xiàng)目中經(jīng)常用到環(huán)信、融云撵摆、騰訊云的即時(shí)通訊的第三方的SDK伯顶,自己也很好奇這些SDK內(nèi)部的實(shí)現(xiàn)原理,自己閑來(lái)無(wú)事也會(huì)去找一些文檔去了解XMPP搭建即時(shí)通訊的技術(shù)鳖眼,奈何道行太淺黑毅,一直不敢去動(dòng)手做這個(gè)東西。最近公司項(xiàng)目不急钦讳,也就有了時(shí)間去折騰這些東西了矿瘦。

環(huán)境的搭建:

一臺(tái)裝有java環(huán)境的mac

java環(huán)境的安裝包可以自行在網(wǎng)上百度下載枕面。附上百度經(jīng)驗(yàn)鏈接http://jingyan.baidu.com/article/e4d08ffdb7a8050fd2f60df1.html

XAMPP ?配置數(shù)據(jù)庫(kù)和服務(wù)器環(huán)境,百度下載傻瓜式安裝即可缚去。

安裝完成后開(kāi)啟所有服務(wù)膊畴,如MySQL Database 無(wú)法啟動(dòng)在終端中輸入命令行 sudo /Applications/XAMPP/xamppfiles/bin/mysql.server start ?(純手打,可能會(huì)打錯(cuò)病游,懶得去查了唇跨,你輸入如果還是不行就去百度一下吧) 執(zhí)行完成重新開(kāi)啟服務(wù)即可。

開(kāi)啟完畢后點(diǎn)擊 Go To Application 按鈕跳轉(zhuǎn)到網(wǎng)頁(yè)跳轉(zhuǎn)的網(wǎng)頁(yè)衬衬,點(diǎn)擊右上角phpMyAdmin ,我沒(méi)有具體去標(biāo)注具體的點(diǎn)擊按鈕买猖,如下圖

進(jìn)入phpMyAdmin后點(diǎn)擊新建數(shù)據(jù)庫(kù)創(chuàng)建Openfire 數(shù)據(jù)庫(kù), 創(chuàng)建完成后在finder中右鍵前往文件輸入路徑 ?/usr/local/openfire/resources/database回車(chē)會(huì)進(jìn)入文件夾找到?openfire_mysql.sql 文件(注意usr是隱藏文件夾)滋尉,然后拖到桌面?zhèn)溆糜窨亍#ㄟM(jìn)入openfire 文件夾前需要把文件夾修改成讀寫(xiě)狀態(tài),如下圖)


openfire_mysql.sql文件找到以后回到數(shù)據(jù)庫(kù)網(wǎng)頁(yè)狮惜,點(diǎn)擊導(dǎo)入高诺,把openfire_mysql.sql數(shù)據(jù)庫(kù)導(dǎo)入,然后點(diǎn)擊執(zhí)行碾篡,如下圖

Openfire 軟件虱而。附上官網(wǎng)下載地址?http://www.igniterealtime.org/projects/openfire/

下載完成以后安裝(附上無(wú)法啟動(dòng)服務(wù)的解決鏈接http://blog.csdn.net/winer888/article/details/49886281)會(huì)出現(xiàn)第一次安裝后能夠啟動(dòng)服務(wù)器,但是電腦重啟后就無(wú)法啟動(dòng)服務(wù)器开泽,并且報(bào)錯(cuò)牡拇,解決辦法鏈接里有,大致分為兩點(diǎn):安裝更新Java環(huán)境穆律、按照順序在命令行中輸入

1. sudo chmod -R 777 /usr/local/openfire/bin????##來(lái)取得文件夾權(quán)限

a:sudo su

b: cd /usr/local/openfire/bin

c:export JAVA_HOME=$(/usr/libexec/java_home)

d:echo $JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home

e:?? cd /usr/local/openfire/bin

f:?? ./openfire.sh

即可解決

安裝完成后在設(shè)置中打開(kāi)會(huì)出現(xiàn)上圖頁(yè)面惠呼,狀態(tài)是Running ?點(diǎn)擊Open Admin Console 按鈕跳轉(zhuǎn)網(wǎng)頁(yè)

選擇中文語(yǔ)言,點(diǎn)擊繼續(xù)

域名修改為本地127.0.0.1(只限本地測(cè)試)點(diǎn)擊繼續(xù)

選擇標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)峦耘,點(diǎn)擊繼續(xù)

選擇MySQL數(shù)據(jù)庫(kù)剔蹋,數(shù)據(jù)庫(kù)URL更換為 ?jdbc:mysql://127.0.0.1:3306/openfire?rewriteBatchedStatements=true ? 用戶名默認(rèn)root,點(diǎn)擊繼續(xù)。openfire是你數(shù)據(jù)庫(kù)的名稱辅髓,127.0.0.1 是你服務(wù)器的IP地址泣崩。點(diǎn)擊繼續(xù)按鈕


輸入郵箱和管理密碼(輸入密碼完成后要記住呀,后期需要登錄的)

設(shè)置完郵箱和密碼后點(diǎn)擊繼續(xù)利朵,如下圖

點(diǎn)擊登錄律想,輸入密碼(希望你們不會(huì)出現(xiàn)忘記密碼的現(xiàn)象)

登錄完成后進(jìn)入管理頁(yè)面,里面會(huì)有服務(wù)器的基本信息绍弟,包括用戶技即、會(huì)話信息、分組等信息樟遣。

PS:到目前為止Openfire環(huán)境算是配置好了而叼,說(shuō)難不難身笤,說(shuō)簡(jiǎn)單也有點(diǎn)麻煩,看你運(yùn)氣嘍葵陵。

是不是感覺(jué)終于把環(huán)境弄好了裝了這么多東西可以寫(xiě)代碼了……但是……接著來(lái)

安裝 spark

??附上下載鏈接https://spark.en.softonic.com/mac/download#downloading我下載時(shí)可慢液荸,不知道是翻墻的緣故還是公司網(wǎng)速不行。

安裝spark過(guò)程中可能會(huì)提醒你需要和Java se6結(jié)合使用脱篙,點(diǎn)擊更多信息里下載就行娇钱。

登錄spark 用戶名和密碼是你在配置openfire是設(shè)置的賬戶密碼登錄完成后刷新openfire頁(yè)面,你會(huì)發(fā)現(xiàn)小人變綠了绊困。(PS:Spark 是為了本機(jī)測(cè)試方便文搂,可以完成添加好友和聊天的測(cè)試)

好了好了……開(kāi)始寫(xiě)代碼了

代碼我接不截圖了,直接附上GitHub鏈接吧:https://github.com/Liangqianyong/XMPP-iOS- ?下載的童鞋麻煩點(diǎn)一下星星哈秤朗。


下面說(shuō)一下配置Xcode環(huán)境的步驟:

當(dāng)你導(dǎo)入XMPP開(kāi)發(fā)包后編譯會(huì)出現(xiàn)報(bào)錯(cuò)煤蹭,我們需要配置一下XMPP運(yùn)行使用的環(huán)境。

1取视、添加靜態(tài)庫(kù)

2硝皂、在Build Settings 中搜索 Header Search Paths ?添加 /usr/include/libxml2

3、現(xiàn)在你在編譯一下作谭,發(fā)現(xiàn)還是會(huì)有報(bào)錯(cuò)稽物,會(huì)提醒你頭文件沒(méi)有找到

解決辦法:新建一個(gè)pch文件,修改為相對(duì)路徑后再pch文件中導(dǎo)入<UIKit/UIKit.h>框架


好了丢早,現(xiàn)在應(yīng)該是沒(méi)有錯(cuò)誤信息了姨裸,接下來(lái)就可以寫(xiě)代碼了秧倾。

由于水平有限怨酝,會(huì)有很多不足的地方,歡迎提出指正那先。

QQ:929245885 ?有問(wèn)題可以聯(lián)系我农猬。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市售淡,隨后出現(xiàn)的幾起案子斤葱,更是在濱河造成了極大的恐慌,老刑警劉巖揖闸,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揍堕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡汤纸,警方通過(guò)查閱死者的電腦和手機(jī)衩茸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)贮泞,“玉大人楞慈,你說(shuō)我怎么就攤上這事幔烛。” “怎么了囊蓝?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵饿悬,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我聚霜,道長(zhǎng)狡恬,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任蝎宇,我火速辦了婚禮傲宜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘夫啊。我一直安慰自己函卒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布撇眯。 她就那樣靜靜地躺著报嵌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪熊榛。 梳的紋絲不亂的頭發(fā)上锚国,一...
    開(kāi)封第一講書(shū)人閱讀 51,115評(píng)論 1 296
  • 那天,我揣著相機(jī)與錄音玄坦,去河邊找鬼血筑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛煎楣,可吹牛的內(nèi)容都是我干的豺总。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼择懂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼喻喳!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起困曙,我...
    開(kāi)封第一講書(shū)人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤表伦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后慷丽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蹦哼,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年要糊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纲熏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赤套,靈堂內(nèi)的尸體忽然破棺而出飘痛,到底是詐尸還是另有隱情,我是刑警寧澤容握,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布宣脉,位于F島的核電站,受9級(jí)特大地震影響剔氏,放射性物質(zhì)發(fā)生泄漏塑猖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一谈跛、第九天 我趴在偏房一處隱蔽的房頂上張望羊苟。 院中可真熱鬧,春花似錦感憾、人聲如沸蜡励。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)凉倚。三九已至,卻和暖如春嫂沉,著一層夾襖步出監(jiān)牢的瞬間稽寒,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工趟章, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杏糙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓蚓土,卻偏偏與公主長(zhǎng)得像宏侍,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子北戏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容