IM-SDK和客服SDK并存开发指南—Android篇
环信作为国内领先的企业级软件服务提供商,产品包括国内上线最早规模最大的即时通讯云平台——环信即时通讯云,以及国内领先的全媒体智能云客服平台——环信移动客服。区别于环信即时通讯云SDK(IM SDK),环信移动客服也专门提供了访客端SDK。很多小伙伴在环信开发过程中,同时使用了环信即时通讯云和环信移动客服服务,就会有这样的疑问,这个时候应该使用哪个SDK 呢?这两个有什么区别?于是让开发者惊呼“还有这种操作”的《IM-SDK和客服-SDK并存开发指南》应运而生,希望能帮助小伙伴们更快速、高效集成环信。嗯,就是有这种操作,不服就来尬舞啊!!!
一、SDK介绍
- 访客端客服SDK基于IM-SDK 3.x开发,包含了IM-SDK所有的API和功能,当同时使用IM和客服时,只需要在初始化、登录、登出操作时使用访客端客服 SDK 提供的相应API即可。
- UI部分集成需要分别导入Kefu-easeui和EaseUI(IM的EaseUI),也可以自己写UI部分。
二、注意事项
- 开发过程中 初始化、登录、登出,务必使用客服SDK的API。
- IM-SDK和客服SDK都包含了armeabi、armeabi-v7、arm64-v8a、x86的CPU架构,在发版的时候,可以选择部分CPU,例如剔除模拟器用的x86架构,在build.gradle中配置即可。
三、资源准备
- 到环信官网下载访客端客服SDK+Demo源码,下载链接:http://www.easemob.com/download/cs选择“Android客服访客端”下载(如下图)。
- 到环信官网下载IM的SDK+Demo源码,下载链接:http://www.easemob.com/download/im 选择Android SDK(如下图)。
四、资源简介
- 解压后的SDK压缩包中,含有基础版和实时音视频版,根据需求的不同使用不同的SDK。默认EaseUI使用的是libs文件夹内的SDK,此SDK含有实时音视频功能,因此比较大,如果不需要使用实时音视频功能的,可以使用libs.without.audio文件夹下的SDK。
- 从官网下载的客服访客端SDK包括以下目录:
其中:kefu-android-demo为包含实时音视频的商城demo,可以直接运行。
libs 为客服访客端SDK,包含实时音视频功能。
libs.without.audio 为不包含实时音视频功能的客服访客端SDK。
五、集成步骤
- 参考客服访客端文档或demo源码集成客服的访客端SDK,文档地址:http://docs.easemob.com/cs/300visitoraccess/androidsdk 。
- 可以把Kefu-Easeui作为一个module,libs放入客服的SDK(kefu-sdk_*.jar和相关so),import IM的easeUI到项目中,去掉里面的hyphenate_*.jar以及相关so。注释掉EaseUI.java中的IMSDK的初始化方法,最终结果为:app项目依赖IM-easeui module,IM-easeui 依赖kefu-easeui module。
- 在自己项目中的Application中的onCreate方法中,先调用客服SDK的初始化方法,再调动IM-easeui和Kefu-easeui的初始化方法(如果不用IM或客服的EaseUI则不需要对EaseUI做初始化)。
- 在app项目中,调用登录、登出方法需要调动客服的API,其他的API为各自的API。在调用EaseUI相关的Activity时,如为IM-easeui的Activity需要在AndroidManifest.xml中注册,kefu-easeui则不需要再注册(因为在kefu-easeui这个module中的AndroidManifest.xml中已注册)。Demo和EaseUI的源码是开源的,也可查看下。
六、注意事项
APP的通知栏提醒,客服和IM的easeui中均有自己的通知栏,代码均开源,可按照自己的方式去修改,具体应用可看下载的Demo源码中的演示实例。
提供的兼容Demo介绍:
- Demo是在客服的商城Demo上修改,在左上角添加了一个聊天室的按钮,点击按钮会根据appkey随机创建一个账号并登录,登录成功后会进入聊天室列表界面,点击某个聊天室可以在聊天室中聊天。
- Demo中客服部分功能还是和原商城Demo功能一致。
- Demo中为了演示因此采用随机注册账号的方式,对于用户场景中,可以先注册好这些账号和自己的账号绑定,这样每次咨询客服就都是同一个人了,也可以显示这个访客曾经的聊天记录。
Demo源码地址:http://kefu-prod-apk.oss-cn-hangzhou.aliyuncs.com/kefu-android-demo.zip
3 个评论
集成了同时存在IM和客服云,Demo代码里的ChatClient.getInstance().init(context, options)这个方法,是不是把IM的SDK也初始化好了?在IM的SDK Demo里初始化用的是EaseUI.getInstance().init(context, options)这个方法.而这个demo里用了ChatClient.getInstance().init(context, options),有点混乱,请释疑.
之前集成了easeUI3.37,现在加上kefu-easeui1.1.3,按照文档的说明,去掉里面的hyphenate_*.jar以及相关so.。以easeUI做为app的model,依赖kefu-easeui。编译的时候,在原来的CallActivity,VideoCallActivity,VoiceCallActivity中
报以下错误,发现好多easeUI里用到的类,在kefu-sdk_1.1.3.jar 中已经没有了,不知道如何整理,请指教。多谢。
G:\projet\yxys\ExamManager\yingnuo\app\src\main\java\com\yxys\yingnuo\ease\ui\CallActivity.java
Error:(16, 26) 错误: 找不到符号
符号: 类 EMCallManager
位置: 程序包 com.hyphenate.chat
Error:(17, 26) 错误: 找不到符号
符号: 类 EMCallStateChangeListener
位置: 程序包 com.hyphenate.chat
Error:(49, 15) 错误: 找不到符号
符号: 类 EMCallStateChangeListener
位置: 类 CallActivity
Error:(53, 18) 错误: 程序包EMCallManager不存在
G:\projet\yxys\ExamManager\yingnuo\app\src\main\java\com\yxys\yingnuo\ease\ui\VideoCallActivity.java
Error:(42, 26) 错误: 找不到符号
符号: 类 EMCallStateChangeListener
位置: 程序包 com.hyphenate.chat
Error:(46, 27) 错误: 程序包com.hyphenate.media不存在
Error:(66, 15) 错误: 找不到符号
符号: 类 EMCallSurfaceView
位置: 类 VideoCallActivity
Error:(67, 15) 错误: 找不到符号
符号: 类 EMCallSurfaceView
位置: 类 VideoCallActivity
Error:(98, 44) 错误: 找不到符号
符号: 类 EMCameraDataProcessor
位置: 类 VideoCallActivity
G:\projet\yxys\ExamManager\yingnuo\app\src\main\java\com\yxys\yingnuo\ease\ui\VoiceCallActivity.java
Error:(36, 26) 错误: 找不到符号
符号: 类 EMCallStateChangeListener
位置: 程序包 com.hyphenate.chat
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.