跳到主要内容

自定义长按消息菜单

用户在会话页面长按消息可打开弹窗,根据当前消息类型、会话类型提供不同选项。您可以在自定义菜单选项的显示名称、顺序、以及自行增删菜单选项。

(width=220) (width=220)

自定义长按消息弹窗的菜单选项

设置会话页面的长按消息事件监听接口(addMessageItemLongClickAction)。

let msgLongClickAction :ItemLongClickAction<Message> = {
obtainTitle: (context: Context, data: Message): string | Resource => {
return "自定义的消息长按事件"
},
onClick: (context: Context, data: Message): void => {
promptAction.showToast({message : "点击了自定义的消息长按事件"})
},
onFilter: (data: Message): boolean => {
// 是否显示该长按事件?true 显示;false 不显示
// 开发者可以根据 Message 对象的会话类型或者消息类型决定是否显示
return true;
},
// 自定义的消息长按事件 Id,相同的 Id 的长按事件只会增加一次
actionId: 'CustomMessageActionId'
}
RongIM.getInstance().conversationService().addMessageItemLongClickAction(msgLongClickAction);

ItemLongClickAction 类属性如下表所示。

属性类型描述
obtainTitlestring显示名称。
onClick(context: Context, data: Message): void长按消息监听函数。
onFilterint控制是否会被显示出来的过滤器。
actionIdFilter自定义的消息长按事件 Id,相同的 Id 的长按事件只会增加一次

自定义消息多选操作菜单

在长按消息弹窗的菜单选项选择更多后,SDK 进入消息多选模式,多选模式下默认提供了删除按钮。您可以增删已有按钮、添加自定义按钮。

IMKit SDK没有内置消息转发功能,实现可以参照:转发消息

let msgMoreAction : MessageMoreAction = {
actionId: 'message_more_forward',// 动作 Id
location: 100, // 按钮将放置在底部,根据 location 值,按照从小到大的顺序依次向右排列。
icon: $r("app.media.rc_message_more_forward"), // 图标

onClick: (context: Context, data: Message[]): boolean => {
// 处理自定义的点击事件
// return true :聊天页面依旧处于多选状态
// return false : 聊天页面退出多选状态
promptAction.showToast({message : "点击了聊天页面底部的更多按钮"});
return true
},
onFilter: (data: Message[]): boolean => {
// 是否显示该按钮,true 显示,false 不显示
return true;
}
}
RongIM.getInstance().conversationService().addMessageMoreAction(msgMoreAction)