Code Monkey home page Code Monkey logo

xz_wechat's Introduction

XZ_WeChat

博客介绍地址:戳这里

建议使用真机测试。 如果遇到问题,大家可以直接在Issues提问,这样大家都能看到,共同提高。

效果图展示: 1 2

做了两年IM相关工作了,去年是集成环信的SDK实现的IM功能,今年公司拥有自己的长连接服务器,于是从头自己定协议然后一步步实现了IM的整体功能,基本把微信IM有关的内容都实现了。最近开始整理过去的一些知识,于是先从聊天框架下手,整理出这个简易的聊天框架,方便大家学习交流。

由于作者的电脑环境被折腾坏了,不能安装cocoapods来管理一些用到的三方,所以直接导入进了该框架,这一点大家不要学习。

该框架目前支持的消息类型:文本消息(包含表情),图片消息,语音消息,视频消息,文件消息(pdf,word,excel,ppt,png,html等格式)。

如果你想展示文件消息,你需要把文件拷贝到沙盒的/Library/Caches/Chat/File目录下,由于我以前是从PC端发送文件到手机端进行的展示,所以目前只能你手动拷贝了。

项目中展示的视频已经转成了mp4类型,而且也经过了压缩,语音也转换成了amr格式,节省流量的同时,可以和安卓端兼容。

你能从该框架学习到什么:

  • 聊天框架的搭建
  • 表情键盘的实现
  • 语音相关的知识
  • 视频相关的知识
  • 文件相关的功能
  • 转场动画相关的知识
  • 数据模型和尺寸模型分离
  • 你能清楚的了解到在实战项目中IM的实现
  • 各种封装完善的工具类拿走即用(叫我雷锋o(╯□╰)o)
  • 等等等很多知识点都可以学习到

目前该框架这是初步,我还有好多功能没有加入进去,后续会慢慢加入,包括:

  • 消息的转发、拷贝、撤回
  • 文章的分享
  • 订阅号的功能
  • 红包的功能
  • 本地缓存的功能(以数据库实现)
  • 草稿箱的功能
  • 等等等还有好多好多

更新日志

10月8日:添加了消息的拷贝、删除、撤回功能,由于转发功能需要用到数据库所以我只添加了转发的UI,等添加了数据库后再完善。注意这里的只有自己的消息并且是发送成功的消息才可以撤回,我这里限制的是5分钟内的消息可以撤回,超过规定时间不允许撤回。

10月12日:添加了系统消息,当消息撤回的时候聊天界面上提示一条你撤回了一条消息的提示。当多人聊天的时候,如果一方撤回了一条消息,系统应该给你发送一条指令,根据这条指令你识别出是哪一条消息被撤回了,然后删除这条消息,并且插入一条谁谁撤回了一条消息

如果你在学习过程中有什么问题可以和我留言,大家共同提高。如果该框架能帮助到你,欢迎star,你的关注是我最大的动力,谢谢!

xz_wechat's People

Contributors

corderguo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xz_wechat's Issues

输入框最小高度和最大高度

博主,你的这个没有增加那个输入框的最小高度和最大高度,就是和微信、QQ一样的输入框自动修改的高度问题。

框架中的时间都以NSInteger来传递,在32位系统有兼容问题

po主,这个框架中的消息时间都是以integer来传递的,最典型的是[ICMessageHelper currentMessageTime]:

  • (NSInteger)currentMessageTime
    {
    NSTimeInterval time = [[NSDate date] timeIntervalSince1970];
    NSInteger iTime = (NSInteger)(time * 1000);
    return iTime;
    }

在64位系统中,这没问题,NSInteger最大数值是8位的long,但是我在iphone5上测试IM的时候,发现时间已经overflow了,messageF.model.message.date = 2147483647。也就是4位int的最大值。
建议框架中的时间还是以nstimeinterval来传递吧,5/5C设备应该还是有不少用户的。

在iPhone5、6 手机上,播放视频时因为内存问题崩溃了

在iPhone5、6 手机上,播放视频时因为内存问题崩溃了 Message from debugger: Terminated due to memory issue;播放的视频有3分钟、15M大,大概播放到30秒左右就崩了;播放时查看内存,一直在往上涨;
在cell中播放小视频和在播放器中大屏播放都会出现。麻烦大神看看, 是什么问题?谢谢!

聊天消息缓存时机

请问聊天消息在何时缓存比较好,是收到消息送达之后立即存储这条消息,还是在某种情况下用事务进行存储。你是直接用SQLite还是FMDB

语音消息列表实现细节

Hi 你好,看了你实现的语音Cell部分,但是并没有看到UI的布局代码,请问是在哪里实现的布局呢?

语音消息 计算Frame不正确

作者您好,谢谢您的框架,他帮助我省了很多时间。目前我已经集成了腾讯的IM。但是在集成的时候发现对方的语音消息布局不正确,下面是问题所在。
自己消息布局 bubbleViewW = 100
自己发送

但是在对方消息的时候 bubbleViewW 改为了cellMinW + 20 然后问题就出现了。

image
我只是粗略的把bubbleViewW 改成了100+20 并没有仔细看代码,所以不知道修改的正不正确。 希望您有时间可以修复一下。
十分感谢您的框架!!

键盘切换问题

键盘跳动问题,在汉字键盘和表情键盘切换的时候,键盘动画很奇怪,跳动

OpenIM诚邀您共建开源项目

愿意参与开源项目吗?OpenIM诚邀技术极客共建开源社区,共同打造开源IM的No1,有兴趣的加我私聊 微信 skiffer

聊天界面的数据如何实现本地化存储

请问一下博主关于消息文件本地化存储是怎么样的,我在你的博客里面看了好像没有写到。我进入一个聊天的界面,历史消息是从本地数据库中取出来的, 这个历史消息的数据库是怎么存储的?

请问联系人列表是在哪里刷新的?

我跟到了XZMessageViewController,然后我发现这里只是将列表信息加入到dataArray中。之后在哪里更新列表UI?代码没有注释看的好头大。另外问一下OC开发现在都是用代码实现UI的吗?我看你直接用代码写UI,还木有注释,还分了好多文件互相调用。绝望ING QAQ

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.