? ? ? ?以下是我在集成環(huán)信SDK實現(xiàn)聊天功能的過程中遇到的一些問題和解決方案袁翁,方便以后查閱和共享,如有錯誤的地方還請不吝賜教蚯撩!
環(huán)信的集成我網(wǎng)上已經(jīng)很多了,我就不再多詳述烛占,我是集成的環(huán)信3.0胎挎!
環(huán)信聊天界面繼承于EaseMessageViewController這個基類的,里面包含了基本用到的代理方法忆家,里面包括消息的發(fā)送和接收處理等等犹菇。但是,有些細節(jié)還是需要用戶自己處理芽卿。比如會話聊天的時候如何獲取或者更新對方的昵稱和頭像揭芍。下面是環(huán)信給我們提供的兩個方案。
方法一:從APP服務器獲取昵稱和頭像
昵稱和頭像的獲刃独:當收到一條消息(群消息)時称杨,得到發(fā)送者的用戶ID,然后查找手機本地數(shù)據(jù)庫是否有此用戶ID的昵稱和頭像筷转,如沒有則調用APP服務器接口通過用戶ID查詢出昵稱和頭像姑原,然后保存到本地數(shù)據(jù)庫和緩存,下次此用戶發(fā)來信息即可直接查詢緩存或者本地數(shù)據(jù)庫呜舒,不需要再次向APP服務器發(fā)起請求锭汛。
昵稱和頭像的更新:當點擊發(fā)送者頭像時加載用戶詳情時從APP服務器查詢此用戶的具體信息然后更新本地數(shù)據(jù)庫和緩存。當用戶自己更新昵稱或頭像時,也可以發(fā)送一條透傳消息到其他用戶和用戶所在的群唤殴,來更新該用戶的昵稱和頭像般婆。
因為我用的是第二種方案,下面我重點講講第二種方案的實現(xiàn)
方法二:從消息擴展中獲取昵稱和頭像
昵稱和頭像的獲榷涫拧:把用戶基本的昵稱和頭像的URL放到消息的擴展中蔚袍,通過消息傳遞給接收方,當收到一條消息時廉侧,則能通過消息的擴展得到發(fā)送者的昵稱和頭像URL页响,然后保存到本地數(shù)據(jù)庫和緩存。當顯示昵稱和頭像時段誊,請從本地或者緩存中讀取闰蚕,不要直接從消息中把賦值拿給界面(否則當用戶昵稱改變后,同一個人會顯示不同的昵稱)连舍。
昵稱和頭像的更新:當擴展消息中的昵稱和頭像URI與當前本地數(shù)據(jù)庫和緩存中的相應數(shù)據(jù)不同的時候没陡,需要把新的昵稱保存到本地數(shù)據(jù)庫和緩存,并下載新的頭像并保存到本地數(shù)據(jù)庫和緩存索赏。
具體實現(xiàn)步驟如下:
1.首先我在EaseMessageViewController 的viewWillAppear 方法里通過userID從本地取出我的模型數(shù)據(jù)(我用的是歸檔存儲的個人信息模型)盼玄,
然后在發(fā)送消息的方法里封裝個人模型信息到字典中傳給EMMessage對象的ext屬性代碼如下:
在收到消息 的時候就可以解析EMMessage對象的ext屬性得到對方的頭像跟昵稱
以上是一個大致的一個流程,中間可能有些細節(jié)忽略了潜腻,但是大致就是這么實現(xiàn)的埃儿。文章有些粗糙,畢竟是第一次寫融涣!還望諒解童番!有什么問題可以隨時留言交流。