本篇集成指南讲述环信客户互动云访客端客服SDK集成,以及访客端SDK与IM SDK同时集成时的需要注意和解决的问题。

  1. 首先到环信官网下载最新版本的商城demo 以及IM的demo

    blob.png

  商城demo下载链接:http://www.easemob.com/download/cs 点击SDK下载就是demo

  IM的demo下载链接:http://www.easemob.com/download/im 点击SDK+Demo源码下载就是demo

  2.下载完两个demo之后,看这个链接先把访客端客服SDK和UI集成好      

  注意事项:(文件从1步骤下载的商城demo中去拿HelpDeskFramework,BaseFramework,HelpDeskUI(目录kefu-ios-demo->kefu-ios-demo->CustomerSystem-ios)这3个文件, HelpDeskFramework中有两个.framework文件,带lite的是没有实时通话功能的,不带lite是有实时通话功能,根据自己的需求二选一,另外一个删除掉。 或者直接从HelpDeskFramework文件中,去拿自己需要的.framework即可) 如果到IM Demo中拿IM SDK的话,只能拿lite版本的。 

blob.png

然后到IM的demo中,去拿EaseUI文件加到自己工程中(如果不与IM用户聊天可以不引入)

blob.png

  3.在pch文件中引入

  #ifdef __OBJC__

  如果用带实时通话功能的SDK就引入这个头文件

  // 客服SDK头文件

  #import

  如果用的不带实时通话功能的SDK就引入

  #import

  // 客服SDK依赖的UI文件的头文件

  #import "HelpDeskUI.h"

  // IM SDK依赖的UI文件的头文件(如果不与IM用户聊天可以不引入)

  #import "EaseUI.h"

  #endif

  然后将EaseUI中的 FixFopen.c删除调用(与客服中的冲突),在EaseUI-EMUIKit-Util目录下

  4. 如果集成过程中,EaseUI的类中,有IM SDK头文件的报错,那么就把报错的头文件注释掉即可

  如果有三方库冲突的报错,把HelpDeskUI中的删除掉即可,如下图

blob.png

  常见集成报错以及处理方案

  一.在导入客服SDK,IM SDK以及客服UI文件之后。

  1. 在HDBaseMessageCell.m类中

    blob.png

    blob.png

  这3个报错是商城demo中到UD里面取用户自己设置的昵称,因为HelpDeskUI中不包含这个数据,所以注释掉 

    SCLoginManager *_lgM; 和 _lgM = [SCLoginManager shareLoginManager];

  在把 _nameLabel.text = _lgM.nickname; 改成 _nameLabel.text = @"昵称"; 即可

  2.报这错的话,在自己pch文件中引入

#define iPhoneXBottomHeight ([UIScreen mainScreen].bounds.size.height==812?34:0)

  3. 如果报sd_animatedGIFNamed方法找不到,那么先到自己工程中搜索这方法,如果没有的话,那么就到环信demo中搜索,找到这个方法所在的UIImage分类,把这个分类加到自己工程中就可以了。

blob.png

  4. 如果报rectOfString 方法找不到,可以在工程中搜索rectOfString方法

blob.png

  然后到NSString+Valid.m 类中拿这个方法,加到报错的类中,self调用一下,注意改一下对象方法或者类方法。

blob.png

  5.如果hdwav.mm类中有报错的话, 把#ifdef _cplusplus 和#endif 加到这个类的头尾


blob.png

blob.png

  6.

blob.png

  这个报错是因为.c文件中引入了OC的头文件,需要在pch文件做处理,把pch文件中所有的OC头文件都引入到

 

 #ifdef __OBJC__
 #endif 内部

  注意:如果自己工程中的pch文件中,也引入了自己的头文件也需要加到#ifdef __OBJC__ #endif内部,不是只加环信的头文件,自己的也要加进去

blob.png

  7.

blob.png 

如果在编译成功之后,运行的时候,程序崩溃,报截图中的错误信息,那么需要在这里添加一下环信SDK。

blob.png


  8.

blob.png

  发送表情显示字符串,需要添加

 

 [[HDEmotionEscape sharedInstance] 
setEaseEmotionEscapePattern:@"\\[[^\\[\\]]{1,3}\\]"];
  [[HDEmotionEscape sharedInstance] 
setEaseEmotionEscapeDictionary:[HDConvertToCommonEmoticonsHelper 
emotionsDictionary]];

  最好是把这段代码加到HelpDeskUI中

  9.

blob.png

  UI上显示英文,把商城demo中配置的国际化内容添加到HelpDeskUI来解决

blob.png

 二.在此基础之上在添加IM SDK依赖的UI文件 EaseUI常见的报错以及解决方案


  1. blob.png

    这报错是FixFopen.c文件重复了,EaseUI文件和HelpDeskUI文件中都有这个文件,把HelpDeskUI文件的FixFopen.删除即可。目录HelpDeskUI---> HDUIKit---> Util


  三. 关于三方库冲突的报错

blob.png

blob.png

blob.png

blob.png

  以上4张截图报错,都是三方库重复的报错,分别的是SDWebImage,PSTCollectionView,MJRefresh,MBProgressHUD 这4个三方库重复,处理方案是把HelpDeskUI---> HDUIKit---> 3rdparty文件里面的删除掉即可,(如果删除掉了三方库还是报错的话,可能是环信UI中用的三方库是老版本的,用户自己用的是新版本的,可能会找不到新版本的方法,需要自己手动替换一下方法)

blob.png

  四. 初始化聊天页面发消息

  如果给客服发消息,那么就初始化客服聊天页面HDMessageViewController,传IM服务号

blob.png

  如果给IM用户发消息,那么就初始化IM聊天页面EaseMessageViewController,传IM用户名

blob.png

  如果环信聊天有英文的需要配置国际化文件,分别把IM Demo 和商城demo中,Supporting Files文件中的 Localizable.strings文件中的中英文内容复制到自己工程中配置的国际化文件中即可

blob.png

  如果用户先集成了IM的SDK,那么在此基础之上在加入访客端客服SDK和UI文件集成即可。

  如果用户先集成了访客端客服SDK,那么在此基础之上在加入IM SDK和UI文件集成即可。

  注意:如果使用了环信的客服SDK,那么在初始化环信SDK以及调用SDK方法登录的时候一定要使用客服SDK的初始化方法,不要使用IM SDK的初始化方法


写了一个客服和IM共存参考demo,可以下载参考


链接: https://pan.baidu.com/s/1JxCMTf9RBpip_qWaLI2Etw

密码: vigs