注册

iOS 环信Demo集成即时聊天和UI 经验分享

刚做完一个拥有即时聊天模块的项目,项目中用的是环信3.0,虽然感觉中间有点小坑,但是总体感觉还是棒棒哒,比我两年前纯用XMPP+openfire便捷多了,而且环信的开发文档感觉好对我的胃口,写的很用心,所以喽,今天分享一下环信的集成和UI页面的摘取。
一、准备工作

1、sdk和静态库的导入

首先是导入环信的sdk,编译,这个过程的困难不是很多,简单提一下,首先下载好EaseMobSDK,这里注意一点的是,lib静态库中包括EaseMobClientSDKLite和EaseMobClientSDK这两种,如果你需要实时语音的话选择EaseMobClientSDK,否则选择EaseMobClientSDKLite,两者只能导入一个。
添加静态库
CoreMedia.framework
AudioToolbox.framework
AVFoundation.framework
MobileCoreServices.framework
ImageIO.framework
libc++.dylib
libz.dylib
libstdc++.6.0.9.dylib
libsqlite3.dylib

SDK包含实时语音依赖库有
CoreMedia.framework
AudioToolbox.framework
AVFoundation.framework
MobileCoreServices.framework
ImageIO.framework
libc++.dylib
libz.dylib
libstdc++.6.0.9.dylib
libsqlite3.dylib
libiconv.dylib

(注意:SDK 不支持 bitcode,向 Build Settings → Linking → Enable Bitcode 中设置 NO。)
然后编译工程,不出意外就成功啦。啊哈哈,开瓶啤酒庆祝一下自己的智商。如果,有些小猴子不成功,例如我


1749914-70edd6763efa88d5.png


上面的原因是,导入的静态库重复,自己检查吧

二、移植环信的demo中需要的到自己的项目

我这里用到了聊天列表,消息的页面和聊天的主页面,大家再倒入这个之前,一定要先备份!项目,否则一失足成千古恨,或者把svn中的项目弄坏了,就自己站墙角去吧。做这个一定要细心,不能着急,最好要记录移过来的每一个类都是干啥的,防止出错,不知道怎么排查。直接看我的图,按照我这张图细心点,相信可以的。

1.以下这张是消息列表需要导过来的类,有些View里面的类是我自己添加的,和demo比对吧,有的就添加进来



1749914-5458dd68d14de923.png


消息列表

2.以下是聊天页面需要的类,CL开头的类,是我自己写的,不用管,剩下的都是需要的



1749914-4f9c4d2b55b1e72e.png


聊天页面

3.剩下需要的东西,这个很重要,要细心哦



1749914-1721afb021ce978d.png


相关

其中有些文件夹里的东西,也需要注意,上图:



1749914-172401b50f5ecdda.png


环信相关

还有,这里面APPDelegate的拓展也比较重要,AppDelegate+EaseMob这个不用白不用了,很方便。

4.做完这些,细活出来啦
做完这些,就是表演真正的技术的时候了。不要想着运行程序跑起来,那肯定是和中彩票一样的概率。具体的报错地方很多,但是都是一些用不上的类不错,我也记不清楚了,只能你们一点一点把不用的地方删除就ok。这个东西不少,但是不复杂,要细心(说了好几遍了)

常见问题:
1.当你导入FixFopen.c的时候会出现


1749914-528d1ec0fee416d4.png


这个是因为添加chatView聊天页面时候缺少依赖库



1749914-d3c130f9a9efc202.png


依赖库

2.如果你需要pch文件,可能会遇见下面问题,需要加上#ifdef __OBJC__ #endif 就好了



1749914-ff74359772cc057d.png


pch问题

3.一些警告的问题,都可以忽略了。因为聊天列表和聊天页面,demo3.0中有环信机器人相关的代码,通通删除,不会有影响的。
 
三、经验之谈

1.环信好用的首要一点就是,各种方法都包含EMMessage这个模型,里面可以用到自己需要的东西,还有拓展,如果开发什么新的模块和写新的方法,建议都传过去EMMessage。

2.chatViewController是继承于EaseMessageViewController这个基类的,里面包含了基本用到的代理方法,方便灵活使用。

1749914-0391af1c45ebf7d0.png


3.肯定会操作聊天气泡和自定义消息,就是从MessageCellBubbleView里面修改的,自定义消息,也是要重新写view的拓展,例如下图中我订制的EaseBubbleView+Card类等



1749914-ae4a25aa3fd43542.png


消息cell和自定义消息

4.自定义消息的发送直接调用就好了,这个很方便,消息拓展Ext的字段和类型需要提前商定
[EaseSDKHelper sendTextMessage:@"自定义消息"
to:self.easeGroupId
messageType:eMessageTypeGroupChat
requireEncryption:NO
messageExt:tmpDict];
暂时完结

暂时分享这么多,希望大家都能成功集成,顺利拿下项目。用第三方的demo集成,一定要知其所以然,一点一滴做起。有什么问题可以随时留言交流,希望我写的能让你们少走点弯路。谢谢大家支持。
 
作者:环信热心用户睡不着的叶

1 个评论

在吗?你这个demo可以发我看看嘛?

要回复文章请先登录注册