【原創】輕量級即時通訊技術MobileIMSDK:Android用戶端開發指南

來源:互聯網
上載者:User

標籤:

 

申明:MobileIMSDK 目前為個人維護的原創開源工程,現陸續整理了一些資料,希望對需要的人有用。如需與作者交流,見文章底簽名處,互相學習。 

MobileIMSDK開源工程的代碼託管地址請進入 [email protected]:點擊進入 

MobileIMSDK的Android用戶端SDK文檔:點擊進入

學習交流

  • 討論學習和資料區:點此進入 推薦
  • 移動端即時通訊交流: 215891622 推薦
  • bug/建議發送至:[email protected]

 

【寫在前面】

MobileIMSDK的Android用戶端Demo工程示範了一個精心編寫的簡易即時通訊用戶端,相關代碼和最佳實務可參考之,它位於SDK完整下載包的 src_all/client/android/MobileIMSDK4a/ 目錄下,這是一個完整的Eclipse+ADT工程。

您也可以下載編譯好的Demo安裝包先行體驗:點此進入。

 

【第一部分】:整合準備> 第1步:下載SDK並找到lib包

① 馬上下載:
最新版打包下載 點此進入,或者前往 MobileIMSDK的Github 自行同步代碼。

② 找到lib包:
位於SDK完整下載包的 dist/client/android/ 目錄下:
 

> 第2步:引用lib包

提示:MobileIMSDK的Android用戶端lib包支援Android 2.3(含)及以上版本。

① Eclipse中如何引用第3方jar包?
直接將lib包複製到Eclipse的Android工程的 libs/ 目錄下,F5重新整理後即可。
如果是其它Android IDE工具,請依此類推。

② 以MobileIMSDK的Demo工程為例,結果如:
 

 

【第二部分】:編寫代碼> 第1步:基本配置
1 // 設定AppKey2 2 ConfigEntity.appKey = "5418023dfd98c579b6001741";3 3                          4 4 // 設定伺服器ip和伺服器連接埠5 5 ConfigEntity.serverIP = "rbcore.openmob.net";6 6 ConfigEntity.serverUDPPort = 7901;7 7              8 8 // 請確保首先進行核心庫的初始化(這不同於iOS和Java端)9 9 ClientCoreSDK.getInstance().init(this.context);
> 第2步:回調設定

① 架構基本事件回調實作類別:

 1 public class ChatBaseEventImpl implements ChatBaseEvent 2 {        3     // 登陸/掉線重連結果通知 4     @Override 5     public void onLoginMessage(int dwUserId, int dwErrorCode) 6     { 7         if (dwErrorCode == 0) 8             Log.i(TAG, "登入成功,當前分配的user_id="+dwUserId); 9         else10             Log.i(TAG, "登入失敗,錯誤碼:" + dwErrorCode);11     }12  13     // 掉線事件通知14     @Override15     public void onLinkCloseMessage(int dwErrorCode)16     {17         Log.i(TAG, "網路連接出錯關閉了,error:" + dwErrorCode);18     }19 }

② 即時訊息事件回調實作類別:

 1 public class ChatTransDataEventImpl implements ChatTransDataEvent 2 { 3     // 收到即時通訊訊息通知 4     @Override 5     public void onTransBuffer(String fingerPrintOfProtocal, int dwUserid, String dataContent) 6     { 7         Log.i(TAG, "收到來自使用者"+dwUserid+"的訊息:"+dataContent); 8     } 9  10     // 收到服務端反饋的錯誤語音總機11     @Override12     public void onErrorResponse(int errorCode, String errorMsg)13     {14         Log.i(TAG, "收到服務端錯誤訊息,errorCode="+errorCode+", errorMsg="+errorMsg);15     }16 }

③ QoS相關事件回調實作類別:

 1 public class MessageQoSEventImpl implements MessageQoSEvent 2 { 3     // 訊息無法完成即時送達的通知 4     @Override 5     public void messagesLost(ArrayList<Protocal> lostMessages) 6     { 7         Log.i(TAG, "收到系統的未即時送達事件通知,當前共有" 8             +lostMessages.size()+"個包QoS保證機制結束,判定為【無法即時送達】!"); 9     }10  11     // 對方已成功收到訊息的通知12     @Override13     public void messagesBeReceived(String theFingerPrint)14     {15         if(theFingerPrint != null)16             Log.i(TAG, "收到對方已收到訊息事件的通知,訊息指紋碼="+theFingerPrint);17     }18 }

* 設定好事件回調通知監聽:

1 ClientCoreSDK.getInstance().setChatBaseEvent(new ChatBaseEventImpl());2 ClientCoreSDK.getInstance().setChatTransDataEvent(new ChatTransDataEventImpl());3 ClientCoreSDK.getInstance().setMessageQoSEvent(new MessageQoSEventImpl());
> 第3步:登陸請求
 1 new LocalUDPDataSender.SendLoginDataAsync(使用者名稱, 密碼){ 2     @Override 3     protected void fireAfterSendLogin(int code) 4     { 5         if(code == 0) 6             Log.i(TAG, "資料發送成功!"); 7         else 8             Log.i(TAG, "資料發送失敗。錯誤碼是:"+code+"!"); 9     }10 }.execute();
> 第4步: 發送訊息
 1 new LocalUDPDataSender.SendCommonDataAsync("這是一條測試資訊...", 對方的userId, true){ 2     @Override 3     protected void onPostExecute(Integer code) 4     { 5         if(code == 0) 6             Log.i(TAG, "資料已成功發出!"); 7         else 8             Log.i(TAG, "資料發送失敗。錯誤碼是:"+code+"!"); 9     }10 }.execute();

 

【第三部分】:常見開發問題附錄附錄1:可以讓用戶端更省電嗎?

請調用以下API進行設定即可(架構預設工作在SenseMode.MODE_3S模式下):

1 // MobileIMSDK核心IM架構的敏感度模式設定2 ConfigEntity.setSenseMode(SenseMode.MODE_10S);

MobileIMSDK預定義了多種模式,詳細API說明:點此進入。
特別說明:為了保證演算法的一致性,以上設定需所有平台用戶端和服務端都保持一致,否則將發生不可預測問題。

【原創】輕量級即時通訊技術MobileIMSDK:Android用戶端開發指南

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.