swift3.0 环信的会话列表的头像和名称显示

参考环信官方解决方案。

  • 使用消息扩展,每条消息都包含发送者的用户信息和发送时间(user_id,nick_name,user_photo,send_time)

  • 本地数据库,使用realm,在获取到用户信息(后台返回)时,存储更新到本地数据库

    /// 用户信息模型
    class UserInfo: Object {
        dynamic var nick_name = ""
        dynamic var user_photo = ""
        dynamic var user_id = ""
        dynamic var update_tome = "" //更新时间
    
        // 设置主键
        override static func primaryKey() -> String? {
            return "user_id"
        
        }
        // 设置搜索字段
        override static func indexedProperties() -> [String] {
            return ["user_id"]
        }
    
        /// 更新用户信息
        class func updateUserInfo(user_id: String,nick_name: String,user_photo: String){
            let realm = try! Realm()
            var value =  ["user_id": user_id]
            if user_photo.length > 0 {
                value["user_photo"] = user_photo
            }
            if nick_name.length > 0 {
                value["nick_name"] = nick_name  
            }
            try! realm.write {
                realm.create(UserInfo.self,value: value, update: true)
            }
        }
    
        /// 通过UserID搜索用户
        class func searchUser(user_id: String) -> UserInfo? {
            let realm = try! Realm()
            let result = realm.objects(UserInfo.self).filter("user_id == \"\(user_id)\"")
            if result.count > 0 {
                return result[0]
            }
            return nil
        }
    }
    
    
  • 实现EaseConversationListViewController的EaseConversationListViewControllerDataSource协议

         func conversationListViewController(_ conversationListViewController: EaseConversationListViewController!, modelFor conversation: EMConversation!) -> IConversationModel! {
            通过扩展消息获取user_id
            通过user_id搜索用户信息
            如果搜到用户信息,则对用户信息钟的update_time,和消息扩展的send_time对比,如果send_time是最近的,则更新本地数据,然后在使用用户信息
            没有搜到直接用扩展消息中的用户信息,并更新到本地
        }
    
    

你可能感兴趣的:(swift3.0 环信的会话列表的头像和名称显示)