android版的客服聊天:
本篇博文只講了一些開發的思路和流程,具體代碼能夠看個人 github ,那裏有完整的代碼。
android
當你下載安裝完openfile ,啓動後,再安裝一款相似於 qq 的 Spark軟件,而後在另外一條電腦也安裝上 Spark 軟件,註冊帳號並添加對方爲好友,久能夠作即時聊天了。
而咱們這篇博文講的是 Android 版手機端的客服聊天,因此服務器那邊就用 Spark 軟件作通信,而用戶就是手機端git
首先呢,你須要在 eclipse 的 libs 下 導入下面兩個 jar 包 ,Android Studio 也同樣,環境配一下就行了
github
從上面的效果圖來看可分爲幾部分功能:數據庫
一、全局消息的監聽 ---- 有可能你會想到是否是 利用 broadcase 像監聽來電提醒 那樣監聽推送過了的消息,不是! 二、listview 對數據的顯示 ---- 與以往的 listview 顯示有所不一樣它是 有兩種不一樣樣式的 item 三、表情和文字組合的消息 -- 表情是一張圖片怎麼和文字組合再一塊兒做爲消息發送且使用流量最低
從上面效果圖看不出來的功能有如下幾部分,俗稱後臺:服務器
一、數據庫對數據的存取 -- 通常我是在消息發送前 和 接收 後 都會先對消息進行儲存再 顯示的 2,、用戶即時聊天 的 註冊、 登陸、 登陸狀態的監聽 、推送消息的監聽等
基於openfile開發須要注意的幾點,哎,全是坑,當初開發也是踩着地雷過來的,但願個人經驗能幫助剛接觸openfile的開發者一點點幫助吧。
固然你最好是到個人github 把代碼下下來再結合本篇文章看,這樣效果會比較好。eclipse
填坑1:
Config 這個是自定義的一個類,當你的手機和電腦的WiFi相連就能夠構成一個局域網,利用電腦當服務器,將openfile安裝到你的電腦這臺服務器上,手機就能夠訪問openfile了。
接下去你可能須要改一下手機客戶端的 ServerIp 地址,個人電腦是192.168.155.1,看你的電腦是多少,千萬不要寫 localhost 或是 127.0.0.1 ,這不行的, ServerPort 通常是 5222 。
還有一處我倒騰了好久,就是 chatToService ,我這麼是寫死了,由於只是客服功能,一對一的。
是 ztc123@127.0.0.1 而不是用戶名 ztc123ide
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 進行後臺監聽的。而是利用回調的方法,註冊監聽器,當有數據時回調方法。
好比聊天的初始化spa
private void init(String _userJID) { if (chat == null) { chat = chatmanger.createChat(_userJID, messagelistener); } else { chat.addMessageListener(messagelistener); } }
chat.addMessageListener(messagelistener); 就是註冊監聽器
監聽類code
/** * 監聽消息(內部類) * * @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 吧,裏面也有詳細的註釋:對象