基于环信实现android客户端客服聊天功能
2017-11-02 19:34
776 查看
本来类似于这种第三方的功能是没有必要写博客的,但是由于环信客服功能的文档实在版本过旧,所以在此记录下,希望能给大家带来一点便利。 工具:androidStudio 第1步: 注册一个环信的账号,地址如下,有了直接登录就可以了。https://kefu.easemob.com/mo/login ![登录进来的界面](http://img.blog.csdn.net/20171102190844936?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXV6aWxpMTIwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
然后切换右上角的管理员模式,进入如下界面:
点击左面的列表中的渠道管理——手机App
然后添加App关联——快速创建
这个时候会出现很多的信息出现如下界面:
这里需要用到的为AppKey。然后点击左边列表的设置——企业信息,查看租户id(5位纯数字)
这里的IM服务号需要记录,后面会用到。
到这里,前期的准备信息工作算是完成。
第2步
找到项目的app下的build.gradle,添加如下信息:
//环信客服SDK
compile ‘com.hyphenate:kefu-easeui-android:1.1.2’ //或者 compile ‘com.hyphenate:kefu-easeui-android:1.1.2’
//EaseUI中 头像获取用到了glide,请添加glide库
compile ‘com.github.bumptech.glide:glide:3.7.0’ //其他版本也可以
//EaseUI中,fragment用到了android-support-v4包
compile ‘com.android.support:support-v4:23.1.1’ //其他版本也可以
第3步
设置清单文件
权限部分:
-
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <!-- 这个权限用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 这个权限用于访问GPS定位 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 用于读取手机当前的状态 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 访问网络,网络定位需要上网 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 听筒和扬声器模式切换 --> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> <!-- 音视频 --> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- GCM required, remember replace "com.github.darren.huanx" to your own package --> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <permission android:name="com.github.darren.huanx.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.github.darren.huanx.permission.C2D_MESSAGE" /> <!-- 其中的com.github.darren.huanx需要换为自己的包名 --> <permission android:name="com.github.darren.huanx.permission.MIPUSH_RECEIVE" android:protectionLevel="signatureOrSystem" /> <!-- 其中的com.github.darren.huanx需要换为自己的包名 --> <uses-permission android:name="com.github.darren.huanx.permission.MIPUSH_RECEIVE" /> < application></application>中的信息如下: <!-- gcm start --> <receiver android:name="com.hyphenate.chat.EMGCMBroadcastReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="com.hyphenate.chatuidemo" /> </intent-filter> </receiver> <service android:name="com.hyphenate.chat.EMGCMListenerService" android:exported="false" /> <receiver android:name=".receiver.GCMPushBroadCast" android:exported="false"> <intent-filter> <action android:name="com.hyphenate.sdk.push" /> <category android:name="com.easemob.helpdeskdemo" /> </intent-filter> </receiver> <!-- gcm end --> <!--华为 HMS Config--> <meta-data android:name="com.huawei.hms.client.appid" android:value="10492024" /> <!--华为推送 start--> <receiver android:name="com.hyphenate.chat.EMHWPushReceiver"> <intent-filter> <!-- 必须,用于接收 TOKEN --> <action android:name="com.huawei.android.push.intent.REGISTRATION" /> <!-- 必须,用于接收消息 --> <action android:name="com.huawei.android.push.intent.RECEIVE" /> <!-- 可选,用于点击通知栏或通知栏上的按钮后触发 onEvent 回调 --> <action android:name="com.huawei.android.push.intent.CLICK" /> <!-- 可选,查看 PUSH 通道是否连接,不查看则不需要 --> <action android:name="com.huawei.intent.action.PUSH_STATE" /> </intent-filter> </receiver> <receiver android:name="com.huawei.hms.support.api.push.PushEventReceiver"> <intent-filter> <!-- 接收通道发来的通知栏消息,兼容老版本 PUSH --> <action android:name="com.huawei.intent.action.PUSH" /> </intent-filter> </receiver> <!-- huawei push end --> <!-- 声明小米所需的Receiver--> <!-- mi push --> <service android:name="com.xiaomi.mipush.sdk.PushMessageHandler" android:enabled="true" android:exported="true" tools:ignore="ExportedService" /> <service android:name="com.xiaomi.mipush.sdk.MessageHandleService" android:enabled="true" /> <receiver android:name="com.hyphenate.chat.EMMipushReceiver" android:exported="true" tools:ignore="ExportedReceiver"> <intent-filter> <action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" /> </intent-filter> <intent-filter> <action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED" /> </intent-filter> <intent-filter> <action android:name="com.xiaomi.mipush.ERROR" /> </intent-filter> </receiver> <!-- mi push end --> 在自己的application中进行初始化:
/** * 初始化客服配置 */ private void initKefuConfig() { ChatClient.Options options = new ChatClient.Options(); //必填项,appkey获取地址:kefu.easemob.com,“管理员模式 > 渠道管理 > 手机APP”页面的关联的“AppKey” options.setAppkey("1458170906068252#kefuchannelapp47129"); //必填项,tenantId获取地址:kefu.easemob.com,“管理员模式 > 设置 > 企业信息”页面的“租户ID” options.setTenantId("47129"); // 设置为true后,将打印日志到logcat, 发布APP时应关闭该选项 options.setConsoleLog(true); //appid从华为开发者平台获取 // Kefu SDK 初始化 if (!ChatClient.getInstance().init(this, options)){ return; } ChatClient.getInstance().setDebugMode(true); // Kefu EaseUI的初始化 UIProvider.getInstance().init(this); }
环信客服功能需要先登录然后才能进行聊天,先注册一个账号,注册代码如下:
ChatClient.getInstance().createAccount(username, password, new Callback() { @Override public void onSuccess() { Log.i(TAG, "creat_onSuccess: "); isConnected = true; } @Override public void onError(int errorCode, String s) { Log.i(TAG, "creat_onError: " + s + i); if (errorCode == Error.NETWORK_ERROR){ Log.i(TAG, "creat_onError: " + "网络连接不可用,请检查网络" + errorCode); }else if (errorCode == Error.USER_ALREADY_EXIST){ Log.i(TAG, "creat_onError: " + "用户已经存在" + errorCode); }else if(errorCode == Error.USER_AUTHENTICATION_FAILED){ Log.i(TAG, "creat_onError: " + "无开放注册权限" + errorCode); } else if (errorCode == Error.USER_ILLEGAL_ARGUMENT){ Log.i(TAG, "creat_onError: " + "用户名不合法" + errorCode); }else { Log.i(TAG, "creat_onError: " + "注册失败!" + errorCode); } isConnected = false; } @Override public void onProgress(int i, String s) { Log.i(TAG, "creat_onProgress: " + s); } });
username和password自己随便输入就好了。
注册完登录,登录代码如下:
callback与上面的相同
public void toLogin(String userName,String passWord,Callback callback){ ChatClient.getInstance().login(userName, passWord, callback); }
登录之后就可以进行聊天了,打开聊天页面代码如下:
IMNumber为第1步中记录的IM服务号
*/ public void toChatActivity(final String IMNumber,final Activity activity) { activity.runOnUiThread(new Runnable() { @Override public void run() { IntentBuilder builder = new IntentBuilder(activity); //获取地址:kefu.easemob.com,“管理员模式 > 渠道管理 > 手机APP”页面的关联的“IM服务号” builder.setServiceIMNumber(IMNumber); Intent intent = builder.build(); activity.startActivity(intent); // Toast.makeText(activity, "开始聊天", Toast.LENGTH_LONG).show(); } }); }
到这里就已经可以打开环信sdk内置的聊天页面了,并可以发消息。
注意,一定要参考官方的demo,文档真的有点老。
相关文章推荐
- 基于Socket.IO实现Android聊天功能
- 基于Socket.IO实现Android聊天功能代码示例
- Android基于socket实现的简单C/S聊天通信功能
- Android 集成阿里百川实现在线客服、聊天功能
- Android开发之基于MINA框架的聊天通信功能实现
- android 新浪微博客户端的表情功能的实现
- Android 通过 XMPP 实现聊天功能,App Engine Assisted Group Chat (开源)
- android 新浪微博客户端的表情功能的实现
- c++服务器与android客户端进行文件传输功能的实现
- Android照相功能驱动层中HAL的实现(基于OK6410开发板+OV9650摄像头)
- Android基于ListView和CheckBox实现多选和全选记录的功能(转)
- 基于Android的小巫新闻客户端开发--主界面业务逻辑实现
- android客户端简单的聊天程序实现
- 基于百度地图 Android SDKv1.3.5实现简单的定位功能,自定义标题栏
- android 新浪微博客户端的表情功能的实现
- android 新浪微博客户端的表情功能的实现
- 基于Android源码开发的来电接通振动功能实现
- android 新浪微博客户端的表情功能的实现
- Android照相功能驱动层中HAL的实现(基于OK6410开发板+OV9650摄像头)
- android 新浪微博客户端的表情功能的实现