会话页面自定义
消息点击事件
您可以通过调用 addMessageClickListener 方法监听消息的点击事件。消息点击监听 MessageClickListener 的所有方法均为可选方法,可以按需实现。
提示
- 从
1.4.3版本开始,onMessageClick支持语音消息。 - 从
1.4.3版本开始,所有方法均增加Context、ClickEvent/GestureEvent参数。
警告
为了避免内存泄漏,请将监听保存,在必要的时候移除。
接口定义
TypeScript
export interface MessageClickListener {
/**
* 消息头像点击事件
*/
onMessagePortraitClick?: (message: Message, userId: string, context?: Context, event?: ClickEvent) => boolean;
/**
* 消息头像长按事件
*/
onMessagePortraitLongClick?: (message: Message, user: UserInfoModel, context?: Context, event?: GestureEvent) => boolean;
/**
* 消息点击事件
*/
onMessageClick?: (message: Message, context?: Context, event?: ClickEvent) => boolean;
/**
* 消息长按事件
*/
onMessageLongClick?: (message: Message, context?: Context, event?: GestureEvent) => boolean;
/**
* 消息撤回编辑事件
*/
onMessageRecallEditClick?: (message: Message, context?: Context, event?: ClickEvent) => boolean;
/**
* 文本消息超链接点击事件
*/
onMessageLinkClick?: (message: Message, url: string, context?: Context, event?: ClickEvent) => boolean;
/**
* 文本消息 Email 点击事件
*/
onMessageEmailClick?: (message: Message, email: string, context?: Context, event?: ClickEvent) => boolean;
/**
* 文本消息手机号点击事件
*/
onMessagePhoneClick?: (message: Message, phone: string, context?: Context, event?: ClickEvent) => boolean;
}
方法说明
MessageClickListener
| 方法名 | 参数 | 返回值 | 说明 | 支持版本 |
|---|---|---|---|---|
onMessagePortraitClick | message: MessageuserId: stringcontext?: Contextevent?: ClickEvent | boolean | 消息头像点击事件。返回 true 表示 App 处理该事件,SDK 不再处理;返回 false 表示由 SDK 处理 | 1.4.3+ |
onMessagePortraitLongClick | message: Messageuser: UserInfoModelcontext?: Contextevent?: GestureEvent | boolean | 消息头像长按事件。返回 true 表示 App 处理该事件,SDK 不再处理;返回 false 表示由 SDK 处理 | 1.4.3+ |
onMessageClick | message: Messagecontext?: Contextevent?: ClickEvent | boolean | 消息点击事件。从 1.4.3 版本开始支持语音消息。返回 true 表示 App 处理该事件,SDK 不再处理;返回 false 表示由 SDK 处理 | 1.4.3+ |
onMessageLongClick | message: Messagecontext?: Contextevent?: GestureEvent | boolean | 消息长按事件。返回 true 表示 App 处理该事件,SDK 不再处理;返回 false 表示由 SDK 处理 | 1.4.3+ |
onMessageRecallEditClick | message: Messagecontext?: Contextevent?: ClickEvent | boolean | 消息撤回编辑事件。返回 true 表示 App 处理该事件,SDK 不再处理;返回 false 表示由 SDK 处理 | 1.4.3+ |
onMessageLinkClick | message: Messageurl: stringcontext?: Contextevent?: ClickEvent | boolean | 文本消息超链接点击事件。返回 true 表示 App 处理该事件,SDK 不再处理;返回 false 表示由 SDK 处理 | 1.4.3+ |
onMessageEmailClick | message: Messageemail: stringcontext?: Contextevent?: ClickEvent | boolean | 文本消息 Email 点击事件。返回 true 表示 App 处理该事件,SDK 不再处理;返回 false 表示由 SDK 处理 | 1.4.3+ |
onMessagePhoneClick | message: Messagephone: stringcontext?: Contextevent?: ClickEvent | boolean | 文本消息手机号点击事件。返回 true 表示 App 处理该事件,SDK 不再处理;返回 false 表示由 SDK 处理 | 1.4.3+ |
示例代码
TypeScript
let msgClickListener: MessageClickListener = {
onMessagePortraitClick: (message: Message, userId: string, context?: Context, event?: ClickEvent) => {
// 消息头像点击事件
// true 由 App 处理该事件,SDK 不再处理。false 由 SDK 处理
return false;
},
onMessagePortraitLongClick: (message: Message, user: UserInfoModel, context?: Context, event?: GestureEvent) => {
// 消息头像长按事件
// true 由 App 处理该事件,SDK 不再处理。false 由 SDK 处理
return false;
},
onMessageClick: (message: Message, context?: Context, event?: ClickEvent) => {
// 消息点击事件
// true 由 App 处理该事件,SDK 不再处理。false 由 SDK 处理
return false;
},
onMessageLongClick: (message: Message, context?: Context, event?: GestureEvent) => {
// 消息长按事件
// true 由 App 处理该事件,SDK 不再处理。false 由 SDK 处理
return false;
},
onMessageRecallEditClick: (message: Message, context?: Context, event?: ClickEvent) => {
// 消息撤回编辑事件
// true 由 App 处理该事件,SDK 不再处理。false 由 SDK 处理
return false;
},
onMessageLinkClick: (message: Message, url: string, context?: Context, event?: ClickEvent) => {
// 文本消息超链接点击事件
// true 由 App 处理该事件,SDK 不再处理。false 由 SDK 处理
return false;
},
onMessageEmailClick: (message: Message, email: string, context?: Context, event?: ClickEvent) => {
// 文本消息 Email 点击事件
// true 由 App 处理该事件,SDK 不再处理。false 由 SDK 处理
return false;
},
onMessagePhoneClick: (message: Message, phone: string, context?: Context, event?: ClickEvent) => {
// 文本消息手机号点击事件
// true 由 App 处理该事件,SDK 不再处理。false 由 SDK 处理
return false;
},
}
RongIM.getInstance().conversationService().addMessageClickListener(msgClickListener);
增加消息气泡的长按事件
您可以通过 addMessageItemLongClickAction 方法设置会话页面的长按消息事件监听,在相关监听方法中自定义事件。
接口定义
TypeScript
/**
* 长按事件配置接口
*/
export interface ItemLongClickAction<Message> {
/**
* 获取长按菜单显示的标题
*/
obtainTitle: (context: Context, data: Message) => string | Resource;
/**
* 长按菜单项的点击事件
*/
onClick: (context: Context, data: Message) => void;
/**
* 过滤条件,用于控制该长按菜单项是否显示
*/
onFilter: (data: Message) => boolean;
/**
* 动作 ID,用于唯一标识该长按事件
*/
actionId: string;
}
参数说明
ItemLongClickAction
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
obtainTitle | (context: Context, data: Message) => string | Resource | 是 | 长按菜单显示的标题,返回字符串或资源 ID |
onClick | (context: Context, data: Message) => void | 是 |