1. 程式人生 > >關於環信即時通訊的使用小結

關於環信即時通訊的使用小結

因專案中涉及即時通訊的模組,老大跟我說用環信的,所以去熟悉了下後搬到專案中使用,環信文件地址點選開啟連結

首先應該在AndroidManifest.xml檔案中配置環信相關

[html] view plain copy  print?
  1. <!-- 設定環信應用的appkey -->
  2.     <meta-dataandroid:name="EASEMOB_APPKEY"android:value="easemob-demo#chatdemoui"/>
  3.     <!-- 宣告sdk所需的service SDK核心功能-->
  4.     <service
    android:name="com.easemob.chat.EMChatService"/>
  5.     <!-- 百度地圖start -->
  6.        <service
  7.            android:name="com.baidu.location.f"
  8.            android:enabled="true"
  9.            android:process=":remote">
  10.            <intent-filter>
  11.                <actionandroid:name="com.baidu.location.service_v2.2"
    >
  12.                </action>
  13.            </intent-filter>
  14.        </service>

因為專案中只用到單聊的相關,所以只簡單記錄下重點的

先匯入easemobchat_2.2.1.jar和libeasemob_jni.so、libeasemobservice.so庫檔案

使用前應該在application中初始化

// 初始化環信SDK,一定要先呼叫init()
        EMChat.getInstance().init(context);

獲取聊天列表時要加入實時監聽並實現介面EMEventListener

EMChatManager.getInstance().addConnectionListener(connectionListener);
EMContactManager.getInstance().setContactListener(new MyContactListener());

[java] view plain copy  print?
  1. /** 
  2.      * 連線監聽listener 
  3.      *  
  4.      */
  5.     publicclass MyConnectionListener implements EMConnectionListener {  
  6.         @Override
  7.         publicvoid onConnected() {  
  8.             boolean contactSynced = HXSDKHelper.getInstance().isContactsSyncedWithServer();  
  9.             // in case group and contact were already synced, we supposed to notify sdk we are ready to receive the events
  10.             if( contactSynced){  
  11.                 new Thread(){  
  12.                     @Override
  13.                     publicvoid run(){  
  14.                         HXSDKHelper.getInstance().notifyForRecevingEvents();  
  15.                     }  
  16.                 }.start();  
  17.             }else{  
  18.                 if(!contactSynced){  
  19.                     asyncFetchContactsFromServer();  
  20.                 }  
  21.                 if(!HXSDKHelper.getInstance().isBlackListSyncedWithServer()){  
  22.                     asyncFetchBlackListFromServer();  
  23.                 }  
  24.             }  
  25.         }  
  26.         @Override
  27.         publicvoid onDisconnected(finalint error) {  
  28. //          final String st1 = getResources().getString(R.string.can_not_connect_chat_server_connection);
  29. //          final String st2 = getResources().getString(R.string.the_current_network);
  30.             runOnUiThread(new Runnable() {  
  31.                 @Override
  32.                 publicvoid run() {  
  33.                     if (error == EMError.USER_REMOVED) {  
  34.                         // 顯示帳號已經被移除
  35. //                      showAccountRemovedDialog();
  36.                     } elseif (error == EMError.CONNECTION_CONFLICT) {  
  37.                         // 顯示帳號在其他裝置登陸dialog
  38. //                      showConflictDialog();
  39.                     } else {  
  40. //                      if (NetUtils.hasNetwork(MainActivity.this))
  41. //                          chatHistoryFragment.errorText.setText(st1);
  42. //                      else
  43. //                          chatHistoryFragment.errorText.setText(st2);
  44.                     }  
  45.                 }  
  46.             });  
  47.         }  
  48.     }  

[html] view plain copy  print?
  1. private InviteMessgeDao inviteMessgeDao;  
  2.     private UserDao userDao;  
  3.     /***  
  4.      * 好友變化listener  
  5.      *   
  6.      */  
  7.     public class MyContactListener implements EMContactListener {  
  8.         @Override  
  9.         public void onContactAdded(List<String> usernameList) {             
  10.             // 儲存增加的聯絡人  
  11.             Map<String, User>localUsers = WuerbaApplication.getInstance().getContactList();  
  12.             Map<String, User>toAddUsers = new HashMap<String, User>();  
  13.             for (String username : usernameList) {  
  14.                 User user = setUserHead(username);  
  15.                 // 新增好友時可能會回撥added方法兩次  
  16.                 if (!localUsers.containsKey(username)) {  
  17.                     userDao.saveContact(user);  
  18.                 }  
  19.                 toAddUsers.put(username, user);  
  20.             }  
  21.             localUsers.putAll(toAddUsers);  
  22.         }  
  23.         @Override  
  24.         public void onContactDeleted(final List<String> usernameList) {  
  25.             // 被刪除  
  26.             Map<String, User>localUsers = WuerbaApplication.getInstance().getContactList();  
  27.             for (String username : usernameList) {  
  28.                 localUsers.remove(username);  
  29.                 userDao.deleteContact(username);  
  30.                 inviteMessgeDao.deleteMessage(username);  
  31.             }  
  32.             runOnUiThread(new Runnable() {  
  33.                 public void run() {  
  34.                     // 如果正在與此使用者的聊天頁面  
  35.                     String st10 = getResources().getString(R.string.have_you_removed);  
  36.                     if (ChatActivity.activityInstance != null  
  37.                             && usernameList.contains(ChatActivity.activityInstance.getToChatUsername())) {  
  38.                         Toast.makeText(MainActivity.this, ChatActivity.activityInstance.getToChatUsername() + st10, 1)  
  39.                                 .show();  
  40.                         ChatActivity.activityInstance.finish();  
  41.                     }  
  42.                     updateUnreadLabel();  
  43.                     // 重新整理ui  
  44.                     mUserTabTwoFragment.refresh();  
  45.                 }  
  46.             });  
  47.         }  
  48.         @Override  
  49.         public void onContactInvited(String username, String reason) {  
  50.             // 接到邀請的訊息,如果不處理(同意或拒絕),掉線後,伺服器會自動再發過來,所以客戶端不需要重複提醒  
  51.             List<InviteMessage>msgs = inviteMessgeDao.getMessagesList();  
  52.             for (InviteMessage inviteMessage : msgs) {  
  53.                 if (inviteMessage.getGroupId() == null && inviteMessage.getFrom().equals(username)) {  
  54.                     inviteMessgeDao.deleteMessage(username);  
  55.                 }  
  56.             }  
  57.             // 自己封裝的javabean  
  58.             InviteMessage msg = new InviteMessage();  
  59.             msg.setFrom(username);  
  60.             msg.setTime(System.currentTimeMillis());  
  61.             msg.setReason(reason);  
  62.             Log.d("onContactInvited", username + "請求加你為好友,reason: " + reason);  
  63.             // 設定相應status  
  64.             msg.setStatus(InviteMesageStatus.BEINVITEED);  
  65.         }  
  66.         @Override  
  67.         public void onContactAgreed(String username) {  
  68.             List<InviteMessage>msgs = inviteMessgeDao.getMessagesList();  
  69.             for (InviteMessage inviteMessage : msgs) {  
  70.                 if (inviteMessage.getFrom().equals(username)) {  
  71.                     return;  
  72.                 }  
  73.             }  
  74.             // 自己封裝的javabean  
  75.             InviteMessage 

    相關推薦

    關於即時通訊的使用小結

    因專案中涉及即時通訊的模組,老大跟我說用環信的,所以去熟悉了下後搬到專案中使用,環信文件地址點選開啟連結 首先應該在AndroidManifest.xml檔案中配置環信相關 [html] view plain copy  print? <!-- 設

    Android 使用easeui 3.0 整合即時通訊 我踩過的坑

    0、關於註冊賬號就不用說了。 1、建立應用、獲取appkey 0、建立應用 1、填寫資訊 2、獲取appkey 2、整合 0、首先新建一個工程 1、這裡主要介紹使用easeui來整合環信的即時通訊功能,需要下載sdk

    即時通訊sdk使用時遇到的問題及解決

    2.解壓後  3.匯入examples的ChatDemoUI3.0,如果沒有關聯類庫easeui 的話要匯入easeui類庫並關聯 執行時會出現以下異常 Error:Execution failed for task ':transformClassesWithJar

    即時通訊的理解

    近來公司要做環信的即時通訊,發現公司想要聊天的功能基本上QQ都有,這樣就顯得有點不怎麼現實:人家作幾年?咱才多少時間?算了,還好環信也做了幾年了。走多遠就看自己在這個功能裡泡多久吸收多少,有點耐心總能把這段路走完。  整合環信有兩種方法, 1 整合環信的SDK,好處是可以用

    商城客服功能-------即時通訊

    empty public class CustomHelper { private static CustomHelper customhelper; private String TAG = "CustomHelper"; private Context appContext; private E

    即時通訊-伺服器端整合(REST API)-php版demo

     }     }     /*      * 註冊IM使用者(授權註冊)      */     public function hx_register($username, $password, $nickname)     {         $url = $this->url . "/users"

    即時通訊整合過程

    最近一直挺忙,使用了一些第三方的東西,也遇見了不少的問題,前面使用的一些還好,比如推送,分享這些第三方都比較容易整合,這次整合環信的即時通訊還是費了一些周折,剛弄完,趕緊記錄一下。 一.前期需要注意的地方 總的來說環信的開發文件和SDK做的已經很簡單了,但是畢竟是第一次整合

    網易雲即時通訊推送保障及網路優化詳解(三):如何在弱網環境下優化大資料傳輸

    對於移動 APP 來說,IM 功能正變得越來越重要,它能夠建立起人與人之間的連線。社交類產品中,使用者與使用者之間的溝通可以產生出更好的使用者粘性。在複雜的 Android 生態環境下,多種因素都會造成訊息推送不能及時達到客戶端。另外,不穩定的行動網路也給資料傳輸的速率和可靠

    android-使用SDK開發即時通訊功能及原始碼下載

    最近專案中整合即時聊天功能,挑來揀去,最終選擇環信SDK來進行開發,選擇環信的主要原因是介面方便、簡潔,說明文件清晰易懂。文件有android、ios、和後臺伺服器端,還是非常全的。 環信官網:http://www.easemob.com/ 本篇文章目的主要

    03-即時通訊 整合

    環信 環信是在XMPP的基礎上進行的二次開發環信在網路上傳輸的資料是XML 環信 是否使用過環信,簡單說一下環信的實現原理 環信是一個即時通訊的服務提供商環信使用的是XMPP協議,

    VUE專案整合WebIM即時通訊以及所遇到的問題

    功能背景: 之前和朋友一起做了一個wbe專案整合環信的即時通訊的功能,做的時候感嘆web端文件太少,而且npm包有一些坑,記錄下來寫了這篇部落格,之後不斷有人加我微信問我,怎麼整合.現在我再來重寫一下這篇部落格. 環信web整合功能介紹: 首先:在web端環信是不提供介

    iOS 基於SDK實現即時通訊-語音、視訊聊天

    這裡建立的專案是在文字聊天專案:http://blog.csdn.net/create_pro/article/details/62420040基礎上新增的功能,所以可能需要先去連結文章地址檢視整合過程,具體專案連結在下面,這裡只介紹使用環信SDK整合語音、視訊

    即時通訊() bug -"_iconv", referenced from: _avcodec_decode_subtitle2 in libHyphenateFullSDK.a(utils.o)

     因在開發公司專案有即時通訊模組,經商量之後選擇了第三方即時通訊sdk環信,由於3.0文件還不是非常全面,且本人之前沒有過開發即時通訊的經驗,查閱了很多資料,磕磕絆絆幾天終於完成了對該模組的開發,故

    android端使用快速在自己的專案中整合即時通訊

    因為公司的產品開發需要,需要開發IM,於是打算使用環信進行即時通訊的開發 首先在環信註冊成為開發者,建立應用,得到APPKEY 然後在環信官方下載SDK,SDK中有一個ChatDemo,可以安裝到自己的手機上檢視。 而easeui則需要整合到我們的專案中 因為easeui

    5分鐘整合即時通訊功能——Android版

    下載環信demo (Android) 什麼是環信demo 環信demo展示了怎樣使用環信SDK快速建立一個完整的類微信聊天APP。展示的功能包括:環信SDK初始化,登入,登出,註冊訊息接收listener, 傳送訊息。 環信demo原始碼已在github上開源供開發

    為自己的app加入即時通訊功能的流程

    1.      在環信官網上註冊賬號,建立自己的app,生成app的key 2.      下載環信的SDK開發包,並匯入到自己的app中並在自己的app的AndroidManifest.xml檔案中加入步驟1中的key,並加入許可權 具體程式碼為:         

    整合sdk步驟(即時通訊)

    步驟:一,從環信官網註冊獲得appkey(沒有key 無法接入環信伺服器)二, 新增依賴   build.gradle(project)allprojects { repositories { google() jcenter()

    Android-IM即時通訊

    參考: IM : 即時通訊系統(IM,Instant Messenger)。 Android第三方即時聊天SDK的有:網易雲信、環信和融雲等。 這裡以環信來做即時通訊demo達到兩個效果: 1、使用者登入, 2、使用者間即時通訊 環

    Android- IM即時通訊(1)

    ********************************環境配置************************ 1.拷貝Demo包下的libs包下的baidumapapi_v2_1_1.jareasemobchat_2.1.3.jarlocSDK_3.3.jararmeabi資料夾 2.配置許可權

    Android- IM即時通訊_RESTAPI(2)

    *****************************************************REST_API 簡介******************************************************* A)REST client:HTT