聊天页交互回调协议(ChatDelegate)
聊天页交互回调协议:ChatDelegate 属于 Delegate(交互回调)。本页的 props / events / behaviors 来自 sdk-imkit.json → globalUIKit,声明与示例来自 bindings.ios.uikit,不手写漂移。
契约属性(props)
| 属性 | 类型 | 可选 | 说明 |
|---|
事件(events)
| 事件 | 参数 | 说明 |
|---|---|---|
didTapAvatar | userId | 点击头像 |
didTapMessage | message | 点击消息 |
didRequestReadDetail | message | 请求已读明细 |
didRequestResend | localId | 请求重发 |
行为(behaviors)
- 宿主负责头像/详情/重发 UI
- 失败重试走 ViewModel
公开符号与声明
| 语言 | 声明 |
|---|---|
| Swift | protocol IMPChatDelegate: AnyObject { func chat(_ chat: IMPChatViewModel, didTapAvatar userId: String); func chat(_ chat: IMPChatViewModel, didTapMessage message: IMPMessage); func chat(_ chat: IMPChatViewModel, didRequestReadDetail message: IMPMessage); func chat(_ chat: IMPChatViewModel, didRequestResend localId: String) } |
| Objective-C | @protocol IMPOSGlobalChatDelegate <NSObject> - (void)chat:(IMPOSGlobalChatViewModel *)chat didTapAvatar:(NSString *)userId; - (void)chat:(IMPOSGlobalChatViewModel *)chat didTapMessage:(IMPOSMessage *)message; - (void)chat:(IMPOSGlobalChatViewModel *)chat didRequestReadDetail:(IMPOSMessage *)message; - (void)chat:(IMPOSGlobalChatViewModel *)chat didRequestResend:(NSString *)localId; @end |
使用示例(Swift / Objective-C)
final class MyChatDelegate: IMPChatDelegate {
func chat(_ chat: IMPChatViewModel, didTapAvatar userId: String) { /* 宿主实现 */ }
func chat(_ chat: IMPChatViewModel, didTapMessage message: IMPMessage) { /* 宿主实现 */ }
func chat(_ chat: IMPChatViewModel, didRequestReadDetail message: IMPMessage) { /* 宿主实现 */ }
func chat(_ chat: IMPChatViewModel, didRequestResend localId: String) { /* 宿主实现 */ }
init() {}
}@interface MyChatDelegate : NSObject <IMPOSGlobalChatDelegate>
@end
@implementation MyChatDelegate
- (void)chat:(IMPOSGlobalChatViewModel *)chat didTapAvatar:(NSString *)userId { /* 宿主实现 */ }
- (void)chat:(IMPOSGlobalChatViewModel *)chat didTapMessage:(IMPOSMessage *)message { /* 宿主实现 */ }
- (void)chat:(IMPOSGlobalChatViewModel *)chat didRequestReadDetail:(IMPOSMessage *)message { /* 宿主实现 */ }
- (void)chat:(IMPOSGlobalChatViewModel *)chat didRequestResend:(NSString *)localId { /* 宿主实现 */ }
@end示例口径
示例由绑定签名与契约类型生成:构造函数参数、协议方法、属性名均来自契约;实际业务中把示例变量替换为宿主实例即可。
在架构中的位置
| 项 | 值 |
|---|---|
| 层 | Delegate(交互回调) |
| 依赖 | GlobalUIKit -> IMKit -> IMLib(公开接口) |
| 相关组件 | ChatViewController |
错误处理
ViewModel 层通过事件上报错误(如 error(err));错误码与处理建议见 Global IM UIKit 错误处理、状态码(运行时 43 条)与 状态码全量对照(440 条)。