环信2.0替换网易云信日志记录

2018-11-17  本文已影响42人  阿洋12138

现在在公司管理着5个项目,简直有毒。ps. 我们公司不是外包公司,软件都是归公司所有。
因为公司项目需求,需要将公司项目原有的项目中使用的环信SDK移除,使用网易云信来实现基础的IM功能,感觉自己要爆炸了,手上的需求按照正常的进度都需要三个多月才可能做完,现在又插进这个需求也是醉了,现在将移除环信和植入网易云信的过程记录下来,以供下一个项目植入网易云信的时候有个参考。

我们公司的一个项目名称叫做《珠宝易》,有兴趣的可以上Appstore下载看看。

首先,这个项目开始之初,植入环信的工程师是选择的手动集成,他之前把文件也是随意丢进的项目,感觉找起来都麻烦,这次我选择使用cocopod集成,方便快捷。呵呵呵。

注意

初期需求评审时,我的计划是同时更换掉环信的UI库,使用云信的UI库。后来仔细估算了下工作量,得出的结论是,早期先只更换SDk,等SDK更换完成然后进行UI库的替换。毕竟有太多的自定义cell需要重新写了。
最后发现 还是得同时改。。。

环信SDK解耦

我这个项目中对环信的耦合程度太高了,我考虑了下,之后替换环信api的时候不会无厘头的去修改,先将项目中的代码解耦,然后替换。

1.先将整个项目中调用环信的api进行分档归类,这是个苦活,因为耦合度太高,需要归类的文件太多,没办法,慢慢搞起。

2.使用统一的工具类进行SDK的方法调用

3.建立对象的对应关系

3.1 环信和云信对IM的定义

3.2 对象的对应关系

环信对象 网易云信对象
EMConversation(聊天的会话对象) NIMSession(会话对象)
EMMessage(聊天消息类) NIMMessage(消息结构)
EMChatText(聊天的文本对象类型)
EMTextMessageBody NIMMessageObject
EMChatImage
EMImageMessageBody NIMImageObject(作为NIMMessage的messageObject)
EMGroup NIMTeam
EMError NSError
EMCDDeviceManager(距离监听)
环信 云信
EMAttachmentDownloadStatus NIMMessageAttachmentDownloadState
附件下载的状态 消息附件下载状态

云信的消息对象NIMMessage,文本消息设置它的text属性,其他的消息类型都是以消息附件的形式发送的,即NIMMessagemessageObject属性。

EMCDDeviceManager:用于设备监听,实现代理方法proximitySensorChanged:当手机靠近耳朵时或者离开耳朵时的回调方法isCloseToUser YES为靠近了用户, NO为远离了用户

[[EaseMob sharedInstance].chatManager pushNotificationOptions]

[[NIMSDK sharedSDK].apnsManager currentSetting]

这两行返回的是推送相关的设置

注意环信的消息撤回和云信的消息撤回不一致ChatViewController中的revokeMenuAction:实现消息撤回,注意逻辑的变更

3.3 EMChatManagerDelegateNIMChatManagerDelegate的对应关系

EMChatManagerDelegate:
接受群组邀请并加入群组后的回调
- (void)didAcceptInvitationFromGroup:(EMGroup *)group error:(EMError *)error;

NIMChatManagerDelegate:对应的回调


4.进行对应对象的替换

5.对统一工具类中每一个方法进行全局搜索,一个一个的验证相关接口调用是否异常

上一篇 下一篇

猜你喜欢

热点阅读