美文网首页
关于自定义聊天功能(理论篇)

关于自定义聊天功能(理论篇)

作者: userName | 来源:发表于2017-03-04 12:00 被阅读38次

先上效果图

实现的功能,

发送文字,发送系统的emoji,发送图片,发送语音,消息的重发。

控件封装思路

整体采用MVVM框架封装。

UI相关:UI布局上现阶段需求,只使用一个Cell,然后给不同类型消息(例如文字和图片)写2个不同View,Model,和ViewModel。

网络相关:环信完全独立封装起来,提供一个封装好后的一个文件,只有这个文件能访问环信的方法和监听环信的回调。然后对外暴露发送消息方法和接受消息的方法。

键盘相关:键盘中包含文字,emoji,录音频,更多功能(先包括相机和相册)4个模块。

缓存相关:采用FMDB把接受到的消息和发送的消息存入数据库中来保存。每一个对话组创建一个表。

涉及到的技术难点:

1.当一个cell中显示过多的emoji表情,界面会卡顿。

2.每条消息都需要点击,长按,双击等手势。所以需要很好的,灵活的划分各自的点击区域,

3.键盘高度需要根据数据的内容去改变高度,粘贴时需要额外的处理。

4.录音频时如果实现代理方法audioRecorderDidFinishRecording会自动切换到主线程,造成UI卡顿的情况。

5.缓存数据的写入和读取的数据问题。

6.发送消息后需要刷新UI来改变当前消息的状态,如果直接reload会造成浪费和卡顿。所以需要获取当前UI上已经显示的数组,遍历这个数组,获取到这些数组中处于loading状态的数据的行数,按照这个行数刷新UI。

7.在气泡中的文字需要实现手机号,网页地址的辨认。AppleSDK识别文本中URL不太精确,需要自己提供正则式。

然后如果有人需要代码和其他疑惑请留言。

相关文章

  • 关于自定义聊天功能(理论篇)

    先上效果图 实现的功能, 发送文字,发送系统的emoji,发送图片,发送语音,消息的重发。 控件封装思路 整体采用...

  • 小程序轻松实现IM即时通讯多人聊天室

    IM多人聊天室功能简介 ZIM SDK 提供多人房间聊天功能,支持用户向房间内发送文本消息或自定义消息,实现了多人...

  • [STAR]简洁的图片裁切

    尝试用STAR法则写一篇小白Demo,关于自定义图片切割功能 固定裁切框大小,图片可拖动缩放,精准裁切. 源码在最...

  • 关于Docker (理论篇)

    Docker是什么? Docker是一个虚拟环境容器,可以将你的开发环境、代码、配置文件等一并打包到这个容器中,并...

  • (一)现代语言解释中医学说的“气”概念 张海生

    摘要:中医理论经典《黄帝内经》是理解中医气概念的根本。其中《灵枢·决气篇》关于人体之气的定义,应以“功能、作用”解...

  • 自定义刻度盘View--详解

    简介 本篇是接上一篇seekbar的自定义view进阶版。本自定义view主要功能: 可自定义起始时间以及最大时间...

  • iOS 中的copy

    iOS 关于拷贝: 如何让自定义的类实现拷贝功能?实现 协议 -(id) copyWith...

  • WebView自定义长按图片功能

    关于Webview长按图片功能,系统默认自带菜单弹窗,但是某些场景我们需要自定义菜单功能,此时就需要屏蔽系统弹窗,...

  • WebView自定义长按图片功能

    关于Webview长按图片功能,系统默认自带菜单弹窗,但是某些场景我们需要自定义菜单功能,此时就需要屏蔽系统弹窗,...

  • 聊天功能

    了解webscoket WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议...

网友评论

      本文标题:关于自定义聊天功能(理论篇)

      本文链接:https://www.haomeiwen.com/subject/weodgttx.html