微信聊天框架的搭建

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,你的关注是我最大的动力,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,898评论 0 15
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,117评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,202评论 4 61
  • 苏衍衍许久没有想起以前的事情了,这一日不知怎么地,就被以前初中的同学找到了,要不是因为以前还算相熟,苏...
    卓卓ANNE阅读 399评论 0 0
  • 嗨,大家好!我是邓海宽,今天的“语文有意思吧”由我主持,本期的主题是“多彩的世界”。我们的生活多姿多彩,我们的词语...
    微笑着生活一一秀琴阅读 248评论 0 0