Global IM UIKit 自定义 Cell
消息气泡由 ChatCellModel 描述、由宿主 Cell 渲染。自定义消息类型时,宿主在 CellModel 之上做渲染分支,不需要修改 ViewModel 或网络层。
ChatCellModel 契约
| 属性 | 类型 | 可选 | 说明 |
|---|---|---|---|
message | Message | 否 | 消息实体(IMLib Message) |
showTime | bool | 否 | 是否展示时间分隔(默认 5 分钟规则) |
showAvatar | bool | 否 | 是否展示头像 |
readCount | int? | 是 | 群聊已读人数(n/m 的分子) |
sendState | enum | 否 | 发送状态(发送中 / 成功 / 失败 / 已读) |
数据源契约
ChatDataSource:按 seq 升序/分页状态;暴露 hasMore 与 loadingMore
自定义渲染示例
Objective-C 示例已隐藏(含未导出符号)
该示例引用了 SDK 头文件未导出的符号(多为 Swift 专用 helper)。请使用下表真实 ObjC 类,或参考对应组件页的 Objective-C 接入说明。
| 可用 ObjC 类 | 用途 |
|---|---|
IMPOSClient | IMLib 客户端(连接、消息、会话、群组等) |
IMPOSChatViewController | IMKit 会话页(真实 ObjC 类) |
IMPOSConversationListViewController | IMKit 会话列表页(真实 ObjC 类) |
IMPOSGlobalChatViewController | Global UIKit 会话页(真实 ObjC 类) |
IMPOSGlobalChatListViewController | Global 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 时重置所有可变状态(图片、已读、失败态),避免串行复用脏数据。