会话消息事件监听
更新时间: 2024/09/27 10:50:00
IM UIKit 会话列表模块(nim_chatkit_ui
)针对一些通用的点击事件通过参数对外暴露。您可以在这些通过传入方法实现自己的点击事件逻辑,如果您不传入对应的参数方法,将会运行默认逻辑。如果我们提供的参数不满足您的需求,也可以通过修改源码的方式实现自己的业务需求。
所有回调参数返回值为bool,您在实现的时候如果返回true,将不会走默认实现,返回false则会先执行您注入的实现,然后执行默认实现。
通过传入方法参数
消息体点击事件
- 方法说明
方法名称 |
方法说明 | 参数说明 |
---|---|---|
onMessageItemClick |
会话中消息的点击事件 | onMessageItemClick 的参数如下
|
onMessageItemLongClick |
会话消息的长按事件 | onMessageItemLongClick 的参数说明如下
|
onTapAvatar |
会话消息的头像点击事件 | onTapAvatar 的参数说明如下
|
下图中红框所示的单个消息区域即为一个消息 Item。
- ChatMessage 说明
ChatMessage
为会话消息数据实体类,其成员参数见下表。
属性或方法 | 类型 | 说明 |
---|---|---|
nimMessage |
NIMMessage | 消息实体类,消息内容 |
isRevoke |
bool | 是否被撤回 |
pinOption |
NIMMessagePin | 消息PIN |
replyMsg |
NIMMessage | 回复消息,仅用于发送时存储,方便重发时使用,不可用于展示 |
示例代码
- 全局配置,全局生效
dart// 1. 通过全局的Config 配置
ChatKitClient.instance.chatUIConfig.messageClickListener = MessageClickListener(
onTapAvatar: (String? userId,{bool? isSelf}){
///todo onTapAvatar
},
onMessageItemLongClick: (chatMessage){
///todo onMessageItemLongClick
},
onMessageItemClick: (chatMessage){
///todo onMessageItemClick
}
);
- 针对指定页面的配置,优先级高于全局配置
dart//2. 针对指定页面的配置,优先级高于全局配置
ChatPage(
sessionId:
sessionId,
sessionType: sessionType,
anchor: anchor,
onTapAvatar: (String? userId,{bool? isSelf}){
///todo onTapAvatar
},
onMessageItemLongClick: (chatMessage){
///todo onMessageItemLongClick
},
onMessageItemClick: (chatMessage){
///todo onMessageItemClick
},
));
长按弹框点击事件
同时我们也提供对消息长按弹框中每一项的回调,供您自定义实现,如您不实现,会走默认逻辑。 这些方法都封装在 PopMenuAction中,可在调用的时候按需传入。
- 方法说明
方法名 | 方法说明 | 参数说明 |
---|---|---|
onMessageCopy |
消息复制 | message :消息 Item 数据 |
onMessageReply |
回复 | message :消息 Item 数据 |
onMessageForward |
转发 | message :消息 Item 数据 |
onMessagePin |
PIN 或者取消PIN | message :消息 Item 数据,isCancel 是否取消 |
onMessageCollect |
收藏 | message :消息 Item 数据 |
onMessageDelete |
删除 | message :消息 Item 数据 |
onMessageRevoke |
撤回 | message :消息 Item 数据 |
示例代码
全局配置
dartChatKitClient.instance.chatUIConfig.messageClickListener = MessageClickListener(
customPopActions: PopMenuAction(
onMessageCopy: (message){
}
)
);
- 针对指定页面的配置,优先级高于全局配置
dart ChatPage(
sessionId:sessionId,
sessionType: sessionType,
anchor: anchor,
customPopActions: PopMenuAction(
onMessageCopy: (message){
}
),
));
此文档是否对你有帮助?