? ? ? ?以下是我在集成環信SDK實現聊天功能的過程中遇到的一些問題和解決方案,方便以后查閱和共享,如有錯誤的地方還請不吝賜教!
環信的集成我網上已經很多了,我就不再多詳述,我是集成的環信3.0!
環信聊天界面繼承于EaseMessageViewController這個基類的,里面包含了基本用到的代理方法,里面包括消息的發送和接收處理等等。但是,有些細節還是需要用戶自己處理。比如會話聊天的時候如何獲取或者更新對方的昵稱和頭像。下面是環信給我們提供的兩個方案。
方法一:從APP服務器獲取昵稱和頭像
昵稱和頭像的獲取:當收到一條消息(群消息)時,得到發送者的用戶ID,然后查找手機本地數據庫是否有此用戶ID的昵稱和頭像,如沒有則調用APP服務器接口通過用戶ID查詢出昵稱和頭像,然后保存到本地數據庫和緩存,下次此用戶發來信息即可直接查詢緩存或者本地數據庫,不需要再次向APP服務器發起請求。
昵稱和頭像的更新:當點擊發送者頭像時加載用戶詳情時從APP服務器查詢此用戶的具體信息然后更新本地數據庫和緩存。當用戶自己更新昵稱或頭像時,也可以發送一條透傳消息到其他用戶和用戶所在的群,來更新該用戶的昵稱和頭像。
因為我用的是第二種方案,下面我重點講講第二種方案的實現
方法二:從消息擴展中獲取昵稱和頭像
昵稱和頭像的獲取:把用戶基本的昵稱和頭像的URL放到消息的擴展中,通過消息傳遞給接收方,當收到一條消息時,則能通過消息的擴展得到發送者的昵稱和頭像URL,然后保存到本地數據庫和緩存。當顯示昵稱和頭像時,請從本地或者緩存中讀取,不要直接從消息中把賦值拿給界面(否則當用戶昵稱改變后,同一個人會顯示不同的昵稱)。
昵稱和頭像的更新:當擴展消息中的昵稱和頭像URI與當前本地數據庫和緩存中的相應數據不同的時候,需要把新的昵稱保存到本地數據庫和緩存,并下載新的頭像并保存到本地數據庫和緩存。
具體實現步驟如下:
1.首先我在EaseMessageViewController 的viewWillAppear 方法里通過userID從本地取出我的模型數據(我用的是歸檔存儲的個人信息模型),
然后在發送消息的方法里封裝個人模型信息到字典中傳給EMMessage對象的ext屬性代碼如下:
在收到消息 的時候就可以解析EMMessage對象的ext屬性得到對方的頭像跟昵稱
以上是一個大致的一個流程,中間可能有些細節忽略了,但是大致就是這么實現的。文章有些粗糙,畢竟是第一次寫!還望諒解!有什么問題可以隨時留言交流。