在我們?nèi)粘?yīng)用開發(fā)中嚣伐,很多時(shí)候產(chǎn)品需要IM聊天功能糖赔。考慮到時(shí)間轩端、難度等問題一般會(huì)選擇集成一些比較穩(wěn)定的第三方SDK來實(shí)現(xiàn)功能放典。最近的項(xiàng)目也有IM需求,因?yàn)橹坝眠^環(huán)信基茵,感覺還不錯(cuò)奋构,所以就再次使用了環(huán)信SDK。
環(huán)信以及其他第三方SDK有個(gè)問題就是環(huán)信服務(wù)器本身不會(huì)保存用戶的昵稱及頭像拱层,但實(shí)際項(xiàng)目中又需要顯示弥臼。
關(guān)于這個(gè)問題在環(huán)信官方的常見問題中也提供了如下兩種解決方案以及利弊分析,如圖:
之前的項(xiàng)目中使用的第一種方式根灯,這種方式還需要服務(wù)器配合專門提供查詢用戶信息的API径缅。相比較下來第二種方式 實(shí)現(xiàn)起來更方便,不需要服務(wù)器配合烙肺,只需要在發(fā)出的消息擴(kuò)展字段中增加昵稱和頭像屬性即可
官網(wǎng)只提供了兩種方案的思路及利弊分析纳猪,但沒有提供具體的實(shí)現(xiàn)代碼,對(duì)于第一次使用環(huán)信SDK的朋友來說 改起來可能還是需要花點(diǎn)時(shí)間的桃笙。這篇文章會(huì)提供給大家第二種方案的具體實(shí)現(xiàn)方法氏堤,以便大家使用在項(xiàng)目中,快速高效的解決問題搏明。
在開始講具體的實(shí)現(xiàn)方式前丽猬,我們還需要分析一下宿饱,都需要在哪里顯示頭像和昵稱
對(duì)于一般的應(yīng)用來說,一般有兩個(gè)地方:
- 聊天會(huì)話列表頁
- 聊天頁
我們先解決最容易的聊天頁昵稱和頭像顯示問題脚祟,我們以使用環(huán)信提供的EaseUI為例谬以。
1.在EaseChatFragment文件中找到發(fā)送消息的sendMessage()方法,然后在所要發(fā)送的消息擴(kuò)展中加入用戶昵稱及頭像兩個(gè)字段
2.在EaseChatRow文件中找到顯示頭像及昵稱的代碼由桌,并修改為從消息擴(kuò)展中獲取
這樣在聊天頁里面就可以只要收到包含擴(kuò)展字段的信息就能顯示昵稱及頭像了
接下來我們還要解決聊天會(huì)話列表頁顯示的問題
解決方式差不多为黎,都是先獲取到用戶的昵稱及頭像,再顯示出來就行了行您。但是獲取方式和之前有所不同铭乾,不能再使用從消息擴(kuò)展中獲取了。原因很簡單娃循,如果是我們先發(fā)起的聊天而不是對(duì)方的話炕檩,這時(shí)候我們根本沒有收到對(duì)方發(fā)來的含有擴(kuò)展字段的消息。
那應(yīng)該怎么獲取呢捌斧?其實(shí)也不難笛质,大家考慮一下我們真正使用的場景:一般來說和一個(gè)用戶聊天我們肯定會(huì)先進(jìn)入該用戶的個(gè)人頁面,然后點(diǎn)擊私信捞蚂、聊天類似的按鈕才能開啟聊天妇押,對(duì)不對(duì)?
那我們完全可以在用戶點(diǎn)擊“聊天姓迅、私信”按鈕時(shí)敲霍,將個(gè)人頁面的用戶昵稱及頭像保存到數(shù)據(jù)庫,當(dāng)用戶進(jìn)入聊天會(huì)話列表頁時(shí)丁存,直接從數(shù)據(jù)庫查出來顯示就可以了
下面的圖片以我司項(xiàng)目舉例肩杈,大家可以用到自己的項(xiàng)目中修改對(duì)應(yīng)的地方就可以了。
這里還有個(gè)小提示解寝,會(huì)話列表頁顯示時(shí)可以優(yōu)先使用官方API getLatestMessageFromOther()這個(gè)方法锋恬,判斷對(duì)方是否發(fā)送過信息,如果是编丘,就從消息擴(kuò)展中獲取与学,反之,則從數(shù)據(jù)庫獲取即可
以上Android 環(huán)信顯示頭像及昵稱的簡單方法嘉抓,iOS的實(shí)現(xiàn)方式相同索守。希望這篇文章可以幫助大家解決項(xiàng)目中的時(shí)間問題。有不對(duì)的地方抑片,請(qǐng)不吝賜教卵佛,謝謝!