会话消息事件监听

更新时间: 2024/09/27 10:50:00

IM UIKit 会话列表模块(nim_chatkit_ui)针对一些通用的点击事件通过参数对外暴露。您可以在这些通过传入方法实现自己的点击事件逻辑,如果您不传入对应的参数方法,将会运行默认逻辑。如果我们提供的参数不满足您的需求,也可以通过修改源码的方式实现自己的业务需求。

所有回调参数返回值为bool,您在实现的时候如果返回true,将不会走默认实现,返回false则会先执行您注入的实现,然后执行默认实现。

通过传入方法参数

消息体点击事件

  • 方法说明
方法名称
方法说明 参数说明
onMessageItemClick 会话中消息的点击事件 onMessageItemClick的参数如下
  • message消息 Item 数据,具体见下文的ChatMessage 说明
onMessageItemLongClick 会话消息的长按事件 onMessageItemLongClick的参数说明如下
  • message消息 Item 数据,具体见下文的 ChatMessage 说明
onTapAvatar 会话消息的头像点击事件 onTapAvatar的参数说明如下
  • userID:被点击用户的userId
  • isSelf:被点击的用户是不是自己,默认false

下图中红框所示的单个消息区域即为一个消息 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){

            }
        )
    );

  1. 针对指定页面的配置,优先级高于全局配置
dart  ChatPage(
      sessionId:sessionId,
      sessionType:  sessionType,
      anchor: anchor,
      customPopActions: PopMenuAction(
          onMessageCopy: (message){

          }
      ),
  ));
此文档是否对你有帮助?
有帮助
去反馈
  • 通过传入方法参数
  • 消息体点击事件
  • 示例代码
  • 长按弹框点击事件
  • 示例代码