用環信會話列表顯示自己的使用者系統,包括頭像和暱稱
阿新 • • 發佈:2019-01-01
剛好做了一個專案用到環信,但是環信是不提供設定頭像和暱稱的以及其它一些需要的屬性的,為了回話列表顯示自己所需要的屬性,所以只有自己動手了!
話不多說,開始。。。
在DemoHelper的類中找到getUserInfo方法替換成以下程式碼:
private EaseUser getUserInfo(String username) { //獲取user資訊,demo是從記憶體的好友列表裡獲取, //實際開發中,可能還需要從伺服器獲取使用者資訊, //從伺服器獲取的資料,最好快取起來,避免頻繁的網路請求 EaseUser user = null; //設定自己的頭像 if (username.equals(EMClient.getInstance().getCurrentUser())) { user = new EaseUser(username); user.setAvatar(MyConfig.getImg()); user.setNick(MyConfig.getTruename()); return user; } else { //設定別人的頭像 if (contactList != null && contactList.containsKey(username)) { } else { // 如果記憶體中沒有,則將本地資料庫中的取出到記憶體中。getContactList(); } user = getContactList().get(username); if (user == null) { user = new EaseUser(username); } else { if (TextUtils.isEmpty(user.getNick())) { // 如果名字為空,則顯示環訊號碼 user.setNick(user.getUsername()); } } return user; } }
當然你要想獲取頭像和暱稱,以及其他屬性,肯定是通過擴充套件訊息獲取的,正好環信是提供擴充套件訊息功能的,也是符合使用者自定義用的。
在DemoHelper中找到onMessageReceived方法,通過以下方法獲取擴充套件訊息:
Map<String, Object> ext = message.ext();
String userName = ext.get("userName").toString(); String userPic = ext.get("avatar").toString();
然後增加這些程式碼
String hxIdFrom = message.getFrom(); EaseUser easeUser = new EaseUser(hxIdFrom); easeUser.setAvatar(userPic); easeUser.setNick(userName); easeUser.setIs_private(isPrivate); easeUser.setType(message_type); if(patientId!=null){ easeUser.setPatient_id(patientId); }else{ easeUser.setPatient_id(""); } // 存入記憶體 getContactList(); DemoHelper.this.contactList.put(hxIdFrom, easeUser); // 存入db UserDao dao = new UserDao(DemoHelper.getInstance().appContext); dao.saveContact(easeUser); // List<EaseUser> users = new ArrayList<EaseUser>(); // users.add(easeUser); // dao.saveContactList(users); getModel().setContactSynced(true); // 通知listeners聯絡人同步完畢 notifyContactsSyncListener(true); EMLog.d(TAG, "onMessageReceived id : " + message.getMsgId()); // in background, do not refresh UI, notify it in notification bar if (!easeUI.hasForegroundActivies()) { getNotifier().onNewMsg(message); }
當然如果你需要其他屬性,也可以在資料庫去定義:
然後在DemoDBManager方法里加入相應的儲存和獲取的方法即可。
以上都是本地資料庫操作。擴充套件訊息根據環信的文件來。
好了,這樣就有了自己的回話列表
如果有更好的方法歡迎一起來探討!