Global IM UIKit 自定义 Cell

消息气泡由 ChatCellModel 描述、由宿主 Cell 渲染。自定义消息类型时,宿主在 CellModel 之上做渲染分支,不需要修改 ViewModel 或网络层。

ChatCellModel 契约​

属性类型可选说明
messageMessage否消息实体(IMLib Message)
showTimebool否是否展示时间分隔(默认 5 分钟规则)
showAvatarbool否是否展示头像
readCountint?是群聊已读人数(n/m 的分子)
sendStateenum否发送状态(发送中 / 成功 / 失败 / 已读)

数据源契约​

ChatDataSource:按 seq 升序/分页状态;暴露 hasMore 与 loadingMore

自定义渲染示例​

Objective-C 示例已隐藏(含未导出符号)

该示例引用了 SDK 头文件未导出的符号(多为 Swift 专用 helper)。请使用下表真实 ObjC 类,或参考对应组件页的 Objective-C 接入说明。

可用 ObjC 类用途
IMPOSClientIMLib 客户端(连接、消息、会话、群组等)
IMPOSChatViewControllerIMKit 会话页(真实 ObjC 类)
IMPOSConversationListViewControllerIMKit 会话列表页(真实 ObjC 类)
IMPOSGlobalChatViewControllerGlobal UIKit 会话页(真实 ObjC 类)
IMPOSGlobalChatListViewControllerGlobal UIKit 会话列表页(真实 ObjC 类)
// ios-imkit/uikit/customization/custom-cell
let customCellModel = IMPChatCellModel(message: message, showTime: true, showAvatar: true, readCount: nil, sendState: .sent)
print(customCellModel)

约束​

  • Cell 只读取 ChatCellModel 与 Theme,不直连 IMLib / 网络 / 数据库。
  • 未知消息类型降级为文本或占位(契约 behaviors 已约定),不要崩溃。
  • 高度计算与时间分隔由 CellModel 提供,避免在 Cell 内重复实现规则。
  • 复用 Cell 时重置所有可变状态(图片、已读、失败态),避免串行复用脏数据。