XZ_WeChat高仿微信聊天框架的搭建,工程地址:https://github.com/corderguo/XZ_WeChat
原文地址:http://coderperson.com/2016/09/28/iOS-weChat/
效果圖展示:
做了兩年IM相關(guān)工作了,去年是集成環(huán)信的SDK實(shí)現(xiàn)的IM功能,今年公司擁有自己的長(zhǎng)連接服務(wù)器,于是從頭自己定協(xié)議然后一步步實(shí)現(xiàn)了IM的整體功能,基本把微信IM有關(guān)的內(nèi)容都實(shí)現(xiàn)了。最近開始整理過去的一些知識(shí),于是先從聊天框架下手,我從項(xiàng)目中抽出這個(gè)簡(jiǎn)易的聊天框架,方便大家學(xué)習(xí)交流。
由于該框架是我用最快的時(shí)間從原項(xiàng)目中抽出來的,摘除了本地緩存的功能(這部分內(nèi)容太多了),所以里面或多或少有一些我原項(xiàng)目中的業(yè)務(wù)邏輯,不過不要緊,這不會(huì)影響你對(duì)聊天框架的學(xué)習(xí),我也會(huì)逐漸把該框架規(guī)范起來。
由于作者的電腦環(huán)境被折騰壞了,不能安裝cocoapods來管理一些用到的三方,所以直接導(dǎo)入進(jìn)了該框架,這一點(diǎn)大家不要學(xué)習(xí)。
該框架目前支持的消息類型:文本消息(包含表情),圖片消息,語音消息,視頻消息,文件消息(pdf,word,excel,ppt,png,html等格式)。
如果你想展示文件消息,你需要把文件拷貝到沙盒的`/Library/Caches/Chat/File`目錄下,由于我以前是從PC端發(fā)送文件到手機(jī)端進(jìn)行的展示,所以目前只能你手動(dòng)拷貝了。
項(xiàng)目中展示的視頻已經(jīng)轉(zhuǎn)成了`mp4`類型,而且也經(jīng)過了壓縮,語音也轉(zhuǎn)換成了`amr`格式,節(jié)省流量的同時(shí),可以和安卓端兼容。
你能從該框架學(xué)習(xí)到什么:
* 聊天框架的搭建
* 表情鍵盤的實(shí)現(xiàn)
* 語音相關(guān)的知識(shí)
* 視頻相關(guān)的知識(shí)
* 文件相關(guān)的功能
* 轉(zhuǎn)場(chǎng)動(dòng)畫相關(guān)的知識(shí)
* 數(shù)據(jù)模型和尺寸模型分離
* 你能清楚的了解到在實(shí)戰(zhàn)項(xiàng)目中IM的實(shí)現(xiàn)
目前該框架這是初步,我還有好多功能沒有加入進(jìn)去,后續(xù)會(huì)慢慢加入,包括:
* 消息的轉(zhuǎn)發(fā)、拷貝、撤回
* 文章的分享
* 訂閱號(hào)的功能
* 紅包的功能
* 本地緩存的功能(其實(shí)很多功能都要基于數(shù)據(jù)庫(kù)的,我把數(shù)據(jù)庫(kù)去除掉后,很多功能就一塊去除了)
* 草稿箱的功能
* 等等等還有好多好多
---
**更新日志**:
10月8日:添加了消息的拷貝、刪除、撤回功能,由于轉(zhuǎn)發(fā)功能需要用到數(shù)據(jù)庫(kù)所以我只添加了轉(zhuǎn)發(fā)的UI,等添加了數(shù)據(jù)庫(kù)后再完善。`注意`這里的只有自己的消息并且是發(fā)送成功的消息才可以撤回,我這里限制的是`5分鐘`內(nèi)的消息可以撤回,超過規(guī)定時(shí)間不允許撤回。
10月12日:添加了系統(tǒng)消息,當(dāng)消息撤回的時(shí)候聊天界面上提示一條`你撤回了一條消息`的提示。當(dāng)多人聊天的時(shí)候,如果一方撤回了一條消息,系統(tǒng)應(yīng)該給你發(fā)送一條指令,根據(jù)這條指令你識(shí)別出是哪一條消息被撤回了,然后刪除這條消息,并且插入一條`誰誰撤回了一條消息`。
10月12日:適配xcode8.0,解決bug。
如果你在學(xué)習(xí)過程中有什么問題可以和我留言,大家共同提高。如果該框架能幫助到你,歡迎star,你的關(guān)注是我最大的動(dòng)力,謝謝!