美文网首页iOSiOS 开发技巧iOS技术
iOS 环信Demo集成即时聊天和UI 经验分享

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

作者: 睡不着的叶 | 来源:发表于2016-06-21 17:20 被阅读15168次

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

    一、准备工作

    1、sdk和静态库的导入

    • 首先是导入环信的sdk,编译,这个过程的困难不是很多,简单提一下,首先下载好EaseMobSDK,这里注意一点的是,lib静态库中包括EaseMobClientSDKLiteEaseMobClientSDK这两种,如果你需要实时语音的话选择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。)
      然后编译工程,不出意外就成功啦。啊哈哈,开瓶啤酒庆祝一下自己的智商。如果,有些小猴子不成功,例如我😣

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

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

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

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

    消息列表

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

    聊天页面

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

    相关

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


    环信相关

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

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

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


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

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

    pch问题

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

    三、经验之谈

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

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


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


    消息cell和自定义消息

    4.自定义消息的发送直接调用就好了,这个很方便,消息拓展Ext的字段和类型需要提前商定

    [EaseSDKHelper sendTextMessage:@"自定义消息"
    to:self.easeGroupId
    messageType:eMessageTypeGroupChat
    requireEncryption:NO
    messageExt:tmpDict];

    暂时完结

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

    相关文章

      网友评论

      • Albert新荣:环信做的真的不好
      • 鸢尾嵌宇:为什么我自定义了单元格,之后,那个“已读”的提示就没有了呢?跪求
      • feng_dev:楼主,群聊的,A 建群成功,发送消息也行,B 没有如何在 会话列表里面 监听 到 ?然后列表自动就 有了 那一行 群消息。 求教
      • 雪_晟:环信消息, 本地需不需要做数据库存储呢
      • 2471b6ee3138:请问下 可以把环信单独的ui拿出来用吗
      • 青鸟evergreen:哥们你这么做就违背了环信的初衷了,这不是越做越麻烦么
      • nbawater1234:大神 可以发demo
        过来看下吗 。jmm15222135609@163.com
      • ivylee_mr:环信 的开发者文档 还有关于 推送这一块的东西,
        我想问的是,如果我不需要 推送服务,是不是 就不需要按照 上面的在apple developer 上弄推送的一些设置 ,直接用
      • 上升的羽毛:你好,我现在需要自定义气泡里面的内容,怎么修改啊,完全不知道从哪下手。就要微信里面发送名片一样那种cell,我不想改整个cell,只想改掉气泡,你懂我意思吗?谢谢
        睡不着的叶:@浅浅1120 恩,你看demo,它本身有几种气泡形式。例如照片啊,位置啊,都继承于一个气泡view的基类。你也写一个就好了。模仿他那个。
      • Ko_Neko:请问如果不需要完整的IM界面. 只需要某个模块里有一条聊天室 该怎么做那
      • 朋朋嘭砰碰:sdk不是集成进去就可以了吗,还要删除一些啊,新手
      • w佐w:有没有集成会话列表的demo,按照官方的demo分离出来好多错误
        w佐w:会话列表 分离出来牵扯好多父类 我直接自己写了一个
        睡不着的叶:@W佐Z 是的,我这里没有demo,细心点,那些错误、你好好研究一下,应该都能看懂,先把没用的注释掉就好了。一开始我集成的时候也错误很多,主要是不知道他写的什么意思,你看下逻辑,就好了
      • 6991a5a482e5:请问即时通讯不需要自己的服务器吗?
        6991a5a482e5:@睡不着的叶 好的,谢谢了
        睡不着的叶:@dxykevin 自己的服务器保存好友关系相关的就好了。如果对即时聊天的要求不高。聊天相关的就用环信服务器就好了。直接从他们那调取,
      • imGeek:关注我会有你想要的东西
      • 峰子1994:可以发来看看吗
        睡不着的叶:@峰子1994 保密协议:scream:
        峰子1994: @睡不着的叶 @睡不着的叶 都可以上线呀没事
        睡不着的叶:@峰子1994 我这没有demo,正式的项目发不了啊:sweat:

      本文标题:iOS 环信Demo集成即时聊天和UI 经验分享

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