1 、在使用前需要在Application初始化

    /*** 环信客服*/private void initCECIM(){ChatClient.Options options = new ChatClient.Options();options.setAppkey("******");//必填项,appkey获取地址:kefu.easemob.com,“管理员模式 > 渠道管理 > 手机APP”页面的关联的“AppKey”options.setTenantId("*****");//必填项,tenantId获取地址:kefu.easemob.com,“管理员模式 > 设置 > 企业信息”页面的“租户ID”ChatClient.getInstance().init(this, options);// Kefu SDK 初始化if (!ChatClient.getInstance().init(this, options)){return;}//后面可以设置其他属性ChatClient.getInstance().init(this, new ChatClient.Options().setConsoleLog(true));}/*** 环信即时通讯*/private void initEMOptions() {EMOptions options = new EMOptions();int pid = android.os.Process.myPid();String processAppName = getAppName(pid);// 如果APP启用了远程的service,此application:onCreate会被调用2次// 为了防止环信SDK被初始化2次,加此判断会保证SDK被初始化1次// 默认的APP会在以包名为默认的process name下运行,如果查到的process name不是APP的process name就立即返回if (processAppName == null || !processAppName.equalsIgnoreCase(partyApplication.getPackageName())) {// 则此application::onCreate 是被service 调用的,直接返回return;}// 默认添加好友时,是不需要验证的,改成需要验证options.setAcceptInvitationAlways(false);// 是否自动将消息附件上传到环信服务器,默认为True是使用环信服务器上传下载,如果设为 false,需要开发者自己处理附件消息的上传和下载options.setAutoTransferMessageAttachments(true);// 是否自动下载附件类消息的缩略图等,默认为 true 这里和上边这个参数相关联options.setAutoDownloadThumbnail(true);//初始化EMClient.getInstance().init(partyApplication, options);//在做打包混淆时,关闭debug模式,避免消耗不必要的资源EMClient.getInstance().setDebugMode(true);}private String getAppName(int pID) {String processName = null;ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);List l = am.getRunningAppProcesses();Iterator i = l.iterator();PackageManager pm = this.getPackageManager();while (i.hasNext()) {ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) (i.next());try {if (info.pid == pID) {processName = info.processName;return processName;}} catch (Exception e) {}}return processName;}

2、必须要在线程中登录

 /*** 注册** @param userName* @param pwd*/public static void onRegster(final String userName, final String pwd) {try {EMClient.getInstance().createAccount(userName, pwd);Log.i("", "注册" + userName + "\\n" + pwd);} catch (HyphenateException e) {Log.i("", "注册失败" + e.getMessage());}}
/*** 登陆** @param userName* @param pwd*/public static void onLogin(String userName, String pwd) {EMClient.getInstance().login(userName, pwd, new EMCallBack() {@Overridepublic void onSuccess() {EMClient.getInstance().groupManager().loadAllGroups();EMClient.getInstance().chatManager().loadAllConversations();boolean updatenick = EMClient.getInstance().pushManager().updatePushNickname("");if (!updatenick) {Log.i("onLogin", "update current user nick fail");}}@Overridepublic void onError(int code, String error) {Log.d(TAG, "login: onError 失败: " + error);}@Overridepublic void onProgress(int progress, String status) {Log.d(TAG, "login: onProgress");}});}/*** 注册** @param userName* @param pwd*/public static void onRegster(final String userName, final String pwd) {ChatClient.getInstance().register(userName, pwd, new Callback() {@Overridepublic void onSuccess() {Log.i("注册成功");}@Overridepublic void onError(int i, String s) {Log.i("注册失败" + s);}@Overridepublic void onProgress(int i, String s) {}});}/*** 登录客服* @param uname* @param upwd*/public static void login(final String uname, final String upwd) {ChatClient.getInstance().login(uname, upwd, new Callback() {@Overridepublic void onSuccess() {Log.i("登录成功");}@Overridepublic void onError(int i, String s) {Log.i("登录失败" + s);}@Overridepublic void onProgress(int i, String s) {}});}

3、要想获得群昵称必须要先在线程中调用以下方法

   /*** 群昵称获取*/private void GroupName() {new Thread() {@Overridepublic void run() {try {EMClient.getInstance().groupManager().getJoinedGroupsFromServer();EMClient.getInstance().groupManager().getAllGroups();} catch (HyphenateException e) {}}}.start();}

4、删除会话或者切换账号时必须调用登出方法,否在聊天室里还是切换账号前的消息内容,能看见消息,但是你却无法聊天

使用如下方法

    /*** 删除会话*/public static void logout() {try {new Thread(new Runnable() {@Overridepublic void run() {EMClient.getInstance().logout(true);ChatClient.getInstance().logout(false, new Callback() {@Overridepublic void onSuccess() {}@Overridepublic void onError(int i, String s) {}@Overridepublic void onProgress(int i, String s) {}});}}).start();} catch (Exception e) {}}

环信SDK客服和及时聊天并发接入时,消息回掉都一样的方法,所以使用kefu-sdk-1.1.8.jar就够了,另外的so文件可以使用如下截图的,少了会编译报错:

环信并发接入权限也是个坑,必须要在登录前把权限都获取到,否则会报打不开SQLite数据库的错误,另外清单文件也需要添加几个,我贴几个容易被忽略的,关于权限的可以看看这个(https://github.com/Gxyong/huanxinSdk.git)

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /><uses-permission android:name="android.permission.BROADCAST_STICKY" /><uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

回头我整合完再上传到我的https://github.com/Gxyong里面吧

环信SDK 客服和IM聊天 踩坑记录相关推荐

  1. 使用环信sdk做一个简单的聊天APP

    使用环信sdk做一个简单的即时聊天APP,实现简单的通讯 感悟 在很早以前就想做一个简单的即时聊天app.可能自己对即时聊天的三方SDK了解的不是特别深,在进行了一段时间的学习以后感觉自己的能力达到了 ...

  2. iOS 基于环信SDK实现即时通讯-文字聊天

    这里介绍集成环信SDK3.0自定义聊天页面,后面有练习项目地址 首先到环信官网下载环信SDK.由于后续会实现语音.视频,我这里使用的是带有语音的SDK 下载完成后把HyphenateFullSDK文件 ...

  3. android 第三方 im,Android基于环信SDK开发IM即时聊天

    目前市面上我了解的做第三方即时聊天SDK的有两家:环信.融云,这里我使用环信SDK来完成即时聊天的初步开发工作. 下面先奉上1张效果图: 1.开发准备 首先要到环信官网注册开发者账号,目前只有企业账号 ...

  4. Android基于环信SDK开发IM即时聊天(一)

    2016-09-02更新:可以看一下最新的这篇文章和源码,Android基于环信SDK开发IM即时聊天(二) 目前市面上我了解的做第三方即时聊天SDK的有两家:环信.融云,这里我使用环信SDK来完成即 ...

  5. 环信sdk android 聊天,Android基于环信SDK开发IM即时聊天

    根据用户移动地图的位置,显示在视野范围内的建筑物,简单的思路是,添加地图监听,当地图移动结束之后,计算出当前屏幕四个角的GeoPoint,根据这4个点,通过mys 目前市面上我了解的做第三方即时聊天S ...

  6. Android基于环信SDK开发IM即时聊天(二)

    声明1:北京时间现在是2019/6/10,评论里的问题我看到了,这几天我找时间看看源代码问题出在哪,在此感谢大家的监督 声明2:此Demo我是在5.1测试机上测试通过,感谢WTQ_DOMIAN的评论, ...

  7. 环信SDK 头像、昵称、表情自定义和群聊设置的实现 一(附源码)

    前言: 环信的SDK在公司的项目中有用到,现在用到的是群聊的部分,这里我们分析总结一下自己对环信给的DEMO大概的拆解一下,说说我们怎么样充分的利用这个demo来写我们所需要的业务.这个也由于篇幅的原 ...

  8. 即时通信---环信SDK(IOS)使用教程

    一. 提前准备 注册环信即时通讯云账号 下载iOS的环信SDK 登陆到管理后台 在我的应用中创建一个应用 在苹果的个人开发中心创建一个推送证书(当然不创建也没用关系,只是不能推送消息而已) 创建完证书 ...

  9. android-使用环信SDK开发即时通信功能及源码下载

    最近项目中集成即时聊天功能,挑来拣去,最终选择环信SDK来进行开发,选择环信的主要原因是接口方便.简洁,说明文档清晰易懂.文档有android.ios.和后台服务器端,还是非常全的. 环信官网:htt ...

最新文章

  1. 《繁凡的深度学习笔记》前言、目录大纲 一文让你完全弄懂深度学习所有基础(DL笔记整理系列)
  2. 大数据教父Micheal Stonebraker告诉你大数据的秘密
  3. linux获取ip地址的接口,在Linux上获取接口的IP地址
  4. t分布 u分布 卡方分布_中心极限定理|z分布|t分布|卡方分布
  5. 2022春招马蜂窝旅游网第一轮面试 面经
  6. 2017韩老师计算机网络,2017年计算机等考三级网络技术辅导:计算机网络拓扑结构...
  7. 蓝桥杯评分标准_新闻 | 人工智能学院创新创业实践中心开展蓝桥杯国赛经验分享会...
  8. 如何做一个国产数据库(七) 网络传输 java做订阅客户端
  9. 基于商品包含关系的飞猪搜索优化实践
  10. 优麒麟(Ubuntu Kylin)安装日志
  11. Python中subprocess学习
  12. JavaScript高级程序设计学习笔记(一)
  13. JavaScript制作简易的《飞机大战》
  14. linux系统怎么关闭屏保,Linux关闭屏保
  15. CA数字证书是什么?
  16. python数据结构与算法 20 递归和递归三定律
  17. 基于大数据技术之电视收视率企业项目实战(hadoop+Spark)
  18. springboot整合阿里云短信验证(无需签名和模板,通过阿里云api测试实现短信验证)
  19. 简易 文章发布系统——前台界面
  20. 【rviz】出现“For frame [laser]: Fixed Frame [map] does not exist”错误

热门文章

  1. 推荐系统中的MRR指标
  2. 求一维数组中最大值和最小值
  3. 微软全球执行副总裁--陆奇博士
  4. java计算机毕业设计菜谱宣传系统源码+系统+lw文档+mysql数据库+部署
  5. ssh_crm:用户注册、登陆校验拦截器、员工拜访客户功能
  6. 解决pycharm 在使用搜狗输入法中文不跟随的问题
  7. MATLAB实现周期信号的傅里叶级数的展开
  8. 掌财社:三连阴洗盘是什么意思?
  9. Nyzo验证者搭建教程(可能是最适合程序员参与的区块链)
  10. 【第十四届蓝桥杯单片机组客观题1】