图片描述
图片描述

图片描述

android版的客服聊天:
本篇博文只讲了一些开发的思路和流程,具体代码可以看我的 github ,那里有完整的代码。
图片描述

当你下载安装完openfile ,启动后,再安装一款类似于 qq 的 Spark软件,然后在另一条电脑也安装上 Spark 软件,注册账号并添加对方为好友,久可以做即时聊天了。
而我们这篇博文讲的是 Android 版手机端的客服聊天,所以服务器那边就用 Spark 软件做通讯,而用户就是手机端

首先呢,你需要在 eclipse 的 libs 下 导入下面两个 jar 包 ,Android Studio 也一样,环境配一下就好了
图片描述

从上面的效果图来看可分为几部分功能:

1、全局消息的监听   ----  有可能你会想到是不是 利用 broadcase 像监听来电提醒
那样监听推送过了的消息,不是!
2、listview 对数据的显示  ---- 与以往的 listview 显示有所不同它是 有两种不同样式的 item
3、表情和文字组合的消息 -- 表情是一张图片怎么和文字组合再一起作为消息发送且使用流量最低

从上面效果图看不出来的功能有以下几部分,俗称后台:

1、数据库对数据的存取  --  一般我是在消息发送前 和 接收 后 都会先对消息进行储存再 显示的
2,、用户即时聊天 的 注册、 登录、 登录状态的监听 、推送消息的监听等

基于openfile开发需要注意的几点,哎,全是坑,当初开发也是踩着地雷过来的,希望我的经验能帮助刚接触openfile的开发者一点点帮助吧。
当然你最好是到我的github 把代码下下来再结合本篇文章看,这样效果会比较好。

填坑1:
Config 这个是自定义的一个类,当你的手机和电脑的WiFi相连就可以构成一个局域网,利用电脑当服务器,将openfile安装到你的电脑这台服务器上,手机就可以访问openfile了。
接下去你可能需要改一下手机客户端的 ServerIp 地址,我的电脑是192.168.155.1,看你的电脑是多少,千万不要写 localhost 或是 127.0.0.1 ,这不行的, ServerPort 一般是 5222 。
还有一处我倒腾了很久,就是 chatToService ,我这么是写死了,因为只是客服功能,一对一的。
是 ztc123@127.0.0.1 而不是用户名 ztc123

public class Config {

    public static String ServerIp = "192.168.155.1";
    public static int ServerPort = 5222 ; 
     
    public static final int TYPE_RECEIVER_TXT = 0;
    public static final int TYPE_SEND_TXT = 1;
    
    public static String userAccount = "userAccount";
    public static String userPassword = "123456";
    
    public static String chatToService = "ztc123@127.0.0.1";// 聊天对象
}

填坑2:
刚才上面说了,客户端接收服务器端发过来的消息不是利用 broadcast 进行后台监听的。而是利用回调的方法,注册监听器,当有数据时回调方法。
比如聊天的初始化

    private void init(String _userJID) {
        if (chat == null) {
            chat = chatmanger.createChat(_userJID, messagelistener);
        } else {
            chat.addMessageListener(messagelistener);
        }
    }
 chat.addMessageListener(messagelistener);
 就是注册监听器

监听类

    /**
     * 监听消息(内部类)   
     * 
     * @author michael
     *
     */
    class NewMessageListener implements MessageListener {
 
        // 消息bean

        @Override
        public void processMessage(Chat chat, Message message) { 
            
            if(messageInterface != null){
                messageInterface.getOnlineMessage(message.getBody());
            }
            if(totalMessageInterface != null){
                totalMessageInterface.getTotalOnlineMessage(message.getBody());
            }
        }
    }
当有消息时就会执行回调方法 processMessage(Chat chat, Message message)

具体代码还是看我的github 吧,里面也有详细的注释:

github
https://github.com/ZengTianShengZ/custom...

参考代码有:
bmob 即时聊天案例源码:
Stark-Industry/openfire_androidIM


曾田生z
427 声望34 粉丝

立法者三句修改的话,全部藏书就会变成废纸。——律匠