@ 消息
提及(@)是群聊会话中常见功能,允许用户可以会话中提及指定用户,或全部群成员,以增强消息的提示作用。使用 @ 功能后,消息内容中会额外携带 MentionedInfo 对象。IMKit 默认启用了 @ 功能。
提示
IMKit 未实现 @所有人功能,图中「@所有人」仅作为设计参考。选择联系人页面的数据需要由应用程序提供,否则展示空列表。在使用 @ 功能前,请先实现群组成员提供者。
局限
- 仅支持群聊会话。
- IMKit 默认仅实现了在发送文本消息、引用消息时使用 @ 功能。
- IMKit 未实现 @ 所有人功能。
- @ 消息可以被转发,但转发的只是纯文本,不再具备 @ 功能。
用法
提示
在使用 @ 功能前,请先实现群组成员提供者。
IMKit 默认在配置中启用了 @ 功能,用法如下:
- 在会话页面长 按用户头像可触发消息编辑,提及(@)该用户。
- 在会话页面输入 @ 符号之后,IMKit 会跳转到成员列表选择页面。如果应用程序未实现群组成员提供者(
IGroupMembersProvider),该页面会显示一个空列表。实现群组成员提供者(IGroupMembersProvider)后,IMKit 会通过IGroupMembersProvider对象的getGroupMembers方法取得群成员数据,并展示在该列表页面中。
定制化
自定义选择成员界面
打开 @ 功能开关后,直接输入 @ 字符,会弹出成员列表页面(MentionMemberSelectActivity),您可以替换该页面。
-
调用
RongMentionManager的方法设置监听器,监听 @ 字符输入。JavaRongMentionManager.getInstance().setMentionedInputListener(new IMentionedInputListener() {
/**
* 设置监听
* @param conversationType 会话类型. 群会话类型
* @param targetId 会话 id. 群 ID
*/
@Override
public boolean onMentionedInput(Conversation.ConversationType conversationType, String targetId) {
// 此处可跳转到您自定义的成员列表, 或进行其他操作.
// 返回 true, 拦截事件
return true;
}
});