Android集成融云实现在线客服

这几天在购物的时候咨询客服,发现在线客服这个东西很不错,今天上午就着手实现了一下。

废话不多说,先看效果

Android集成融云实现在线客服_第1张图片

Android集成融云实现在线客服_第2张图片

Android集成融云实现在线客服_第3张图片

Android集成融云实现在线客服_第4张图片

 

 

说实话,可能我比较笨,弄这个花了大半天的时间。

本例使用AndroidStudio创建,其中使用了融云 客服这快,网络请求使用的是xutils3.5

项目结构(很简单)

Android集成融云实现在线客服_第5张图片

实现过程

第一步:你需要去融云官网注册账号创建运用拿到APP_KEY和App Secret(当然比较懒的小伙伴嫌麻烦直接使用我的也行,谁让我这个人比较好呢,哈哈哈哈~)

Android集成融云实现在线客服_第6张图片

第二步:去融云官网下载SDK,将   IMKit 和 IMLib引入项目

下载的SDK解压如下

Android集成融云实现在线客服_第7张图片

 

第三步:修改IMLib这个module中清单文件里面的RONG_CLOUD_APP_KEY,改成我们刚才自己申请的

Android集成融云实现在线客服_第8张图片

第四步:修改自己项目的清单文件,加入权限

    
    
    
    
    
    
    
    
    

    
    
    
    
    
    
    
    

第五步:创建项目,初始化融云及Xutils网络框架

在自己的Application中添加如下代码

//初始化客服云
RongIM.init(this);

//初始化xutils
x.Ext.init(this);

第六步:获取Token(这里有两种方式,我简单的概述下)

第一种:通过官网直接获取

Android集成融云实现在线客服_第9张图片

第二种:通过代码获取(官方告诉我们不要直接在前端获取token,这样不安全,我为了实现功能就将其写在前台,大家正式项目不要学我这样写哦)

看一下官方获取token的说明,首先需要知道他API调用签名的规则

Api调用签名规则

Android集成融云实现在线客服_第10张图片

获取Token

Android集成融云实现在线客服_第11张图片

通过以上我们就知道该怎么弄了

数据签名我们需要使用sha1加密规则

//SHA1加密//  通用_API_接口签名规则
    private static String sha1(String data){
        StringBuffer buf = new StringBuffer();
        try{
            MessageDigest md = MessageDigest.getInstance("SHA1");
            md.update(data.getBytes());
            byte[] bits = md.digest();
            for(int i = 0 ; i < bits.length;i++){
                int a = bits[i];
                if(a<0) a+=256;
                if(a<16) buf.append("0");
                buf.append(Integer.toHexString(a));
            }
        }catch(Exception e){

        }
        return buf.toString();
    }

获取token

 Signature=sha1("EmchN7OIPZmzps"+NONCE+Timestamp);
  RequestParams params = new RequestParams(
                "http://api-cn.ronghub.com/user/getToken.json");
        params.addHeader("App-Key",APP_KEY);
        params.addHeader("Nonce",NONCE+"");
        params.addHeader("Timestamp",Timestamp+"");
        params.addHeader("Signature",Signature);
        params.addBodyParameter("userId", id);
        params.addBodyParameter("name", username);
        params.addBodyParameter("portraitUri", "123");
        x.http().post(params, new Callback.CommonCallback() {

            @Override
            public void onCancelled(CancelledException arg0) {
                Log.e("TGA","-----CancelledException---");
            }

            @Override
            public void onError(Throwable arg0, boolean arg1) {
                Log.e("TGA","-----onError---"+arg0);
            }

            @Override
            public void onFinished() {
                Log.e("TGA","-----onFinished---");
            }

            @Override
            public void onSuccess(String s) {
                JSONObject jsonObject = null;
                try {
                    jsonObject = new JSONObject(s.toString());
                    token=jsonObject.get("token").toString();
                    Log.e("TGA","----token----"+token);

                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        });

这里重点讲一个,有一点大家不要遗忘,就是前面我所说的要获取app_key和App Secret,这里就需要App Secret了注意看一下截图(注意哦,这里不是App_key 是App Secret  博主就被坑了一次)

Android集成融云实现在线客服_第12张图片

到此我们Token就获取到了,接下载我们需要连接融云的服务器

RongIM.connect(token, new RongIMClient.ConnectCallback() {
                        @Override
                        public void onTokenIncorrect() {
                            //失效的状态处理,需要重新获取 Token
//                        getToken(id,username);
                            Log.e("TGA","----------connectonTokenIncorrect-------------");
                            Toast.makeText(MainActivity.this,"connectonTokenIncorrect",Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onSuccess(String s) {
                            Log.e("TGA","----------connectonSuccess-------------");
                           


                        }

                        @Override
                        public void onError(RongIMClient.ErrorCode errorCode) {
                            Log.e("TGA","----------connectonError-------------");

                        }
                    });

连接成功我们就需要和客服妹妹聊天啦(这里的客服id就是你服务的客服id)

 //进入客服
                            //首先需要构造使用客服者的用户信息
                            CSCustomServiceInfo.Builder csBuilder = new CSCustomServiceInfo.Builder();
                            CSCustomServiceInfo csInfo = csBuilder.nickName("融云").build();
                            /**
                             * 启动客户服聊天界面。
                             *
                             * @param context           应用上下文。
                             * @param customerServiceId 要与之聊天的客服 Id。
                             * @param title             聊天的标题,如果传入空值,则默认显示与之聊天的客服名称。
                             * @param customServiceInfo 当前使用客服者的用户信息。{@link io.rong.imlib.model.CSCustomServiceInfo}
                             */
                            RongIM.getInstance().startCustomerServiceChat(MainActivity.this,
                                    "KEFU155416939664758", "在线客服",csInfo);

Android集成融云实现在线客服_第13张图片

这里需要注意我们还需要在清单文件添加客服聊天页面



            
                

                

                
            
        

ConversationFragment这个文件只需要加载一个布局即可

Android集成融云实现在线客服_第14张图片

布局文件如下




    

至此教程也就讲解完了,这里也是带大家入个门,想要制作更多功能,需要去看官方文档说明哦,打字打得手都累了,希望对小伙伴们有帮助哦。

附Demo下载地址

你可能感兴趣的:(移动开发)