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