二级学院英语网站建设通知,万网 网站建设方案书,网站设计制作 一年价格,如何建设黔货出山电子商务网站【iOS】APP IM聊天框架的设计#xff08;基于第三方SDK#xff09;
前言
在开发社交聊天类型的APP的时候#xff0c;IM是必不可少的功能#xff0c;而且很多公司的IM服务都是接的第三方的#xff0c;很少用自研的#xff0c;国内的IM厂商也都很成熟#xff0c;本文所有…【iOS】APP IM聊天框架的设计基于第三方SDK
前言
在开发社交聊天类型的APP的时候IM是必不可少的功能而且很多公司的IM服务都是接的第三方的很少用自研的国内的IM厂商也都很成熟本文所有的方案也都是基于第三方SDK的基础上开展的本人用过自研、腾讯、环信、融云、声网的IM服务。
APP IM框架需要有以下几个优点或者说要优先考虑一下几个点 1、对业务场景有完美的支持 2、扩展性要强能力、UI可以应对产品经理的各种“刁难” 3、第三方IM SDK 与APP业务纠缠小可以随时替换 4、本地化数据存储方便一般是用户信息、聊天记录
IM 能力
我们接第三方IM SDK需要先基于第三方SDK做一个封转,这样如果以后要是切换供应商我们只需要修改我们的封装成就可以了对我们的业务API和UI基本上是没有影响的我以我封转的SMTXIMManager为例
QA2、扩展性要强能力、UI可以应对产品经理的各种“刁难” 需求产品经理想新增一个在聊天界面给用户点歌的需求。 分析A用户给B用户点歌A用户选择一首歌以后发给BA和B的消息列表都会新增一条自定义消息然后弹出一个播放控制器来播放歌曲 开发 1、首先我们在SMIMManager里面新增一种自定义消息类型就好了 2、等下说…
QA3、第三方IM SDK 与APP业务纠缠小可以随时替换
那我只需要修改SMIMManager与SDK的绑定就可以了其他的业务模块其实我是不需要修改的或者你也可以在APP中同时集成两个IM SDK这样在SMIMManager里面你需要做一个判断。
UI 框架
和IM相关的控制器一般只用两个一个是会话列表界面一个是聊天界面我这里把联系人也加进来了因为联系人也算是APPIM的一部分如下
会话聊天界面SMChatViewController
消息列表SMMessageController
这里主要负责IM消息的展示SMIMManager封装的API负责在这里调用比如获取缓存的历史聊天记录、新消息的展示、消息撤回等等。 SMMessageController主要用到的就是消息的Cell和Data如下图 上面的层级模式很多新手小白一看就明了。 QA2、扩展性要强能力、UI可以应对产品经理的各种“刁难” 需求产品经理想新增一个在聊天界面给用户点歌的需求。 分析A用户给B用户点歌A用户选择一首歌以后发给BA和B的消息列表都会新增一条自定义消息然后弹出一个播放控制器来播放歌曲 开发 1、首先我们在SMIMManager里面新增一种自定义消息类型就好了 2、新增一个自定义SMMusicMessageCell和SMMusicMessageCellData然后在列表中注册一下解析一下 3、然后SMMusicMessageCell消息点击以后就调用自己封装的歌曲播放器进行播放了。
SMInputController输入框
输入框上架集成了文本输入、语言输入、表情包、图片、视频、礼物等等如下
相关的结构图如下
SMShowVipGiftView礼物、点歌、会员等付钱的服务
这是一个封装好的弹出层在SMInputBar的礼物按钮上负责调用也没啥好说的。
好友列表SMContactsListViewController
这个没什么好说的SMUserRelationship已经封装好了相关的API。
会话列表SMConversationListViewController
这里面有系统消息消息聚合会话删除会话置顶标记未读SMIMManager和SMUserRelationship也都封装好了相关的API。
QA1、对业务场景有完美的支持 上面的设计是不是能够完美贴合你的业务
存储
项目中用到的数据本地存储底层采用 sqlite 和第三方 FMDB GitHub 开源框架网上也有很多基于FMDB的二次封装也很不错在IM这块主要是用户信息和聊天数据的存储如果要考虑到安全性可以选择数据库加密关于加密这里就不说了哪天有时间专门说说移动端安全相关的。
QA4、本地化数据存储方便一般是用户信息、聊天记录 这里我认为的方便就是封装的易用性、存取安全、本地数据安全。
其他
在发送图片或者视频等消息的时候我们一般上传到云存储七牛、OSS等等然后把云存储链接放到自定义消息格式里面发给对方。
在给资源文件的命名的时候最好拼上图片或者视频的宽、高、格式等信息那么在拿到链接的时候即使网络不好我们可以先把容器定好有利于页面UI的展示。