跳到主要内容

@ 消息

提及(@)是群聊会话中常见功能,允许用户可以会话中提及提及指定用户,或全部群成员,以增强消息的提示作用。使用 @ 功能后,消息内容中会额外携带 MentionedInfo 对象。Global IM UIKit 默认启用了 @ 功能。

Global IM UIKit 未实现 @所有人功能,图中「@所有人」仅作为设计参考。选择联系人页面的数据需要由应用程序提供,否则展示空列表。在使用 @ 功能前,请先实现群组成员提供者

alt(width=250)

局限

  • 仅支持群聊会话。
  • Global IM UIKit 默认仅实现了在发送文本消息、引用消息时使用 @ 功能。
  • Global IM UIKit 未实现 @ 所有人功能。
  • @ 消息可以被转发,但转发的只是纯文本,不再具备 @ 功能。

用法

在使用 @ 功能前,请先实现群组成员提供者

Global IM UIKit 默认在配置中启用了 @ 功能,用法如下:

  • 在会话页面长按用户头像可触发消息编辑,提及(@)该用户。

  • 在会话页面输入 @ 符号之后,Global IM UIKit 会跳转到成员列表选择页面。如果应用程序未实现群组成员提供者(GroupMembersProvider),该页面会显示一个空列表。实现群组成员提供者(GroupMembersProvider)后,Global IM UIKit 会通过 GroupMembersProvider 对象的 getGroupMembers 方法取得群成员数据,并展示在该列表页面中。

    ConfigCenter.getUserInfoConfig().setGroupMembersProvider(new GroupMembersProvider() {
    @Override
    public void getGroupMembers(String groupId, Callback callback) {
    callback.onGetGroupMembersResult(UserInfoList);
    }
    });

定制化

实现 @ 所有人

Global IM UIKit 未实现 @ 所有人功能的页面逻辑,您可以自行实现。

  1. 新建 MentionedInfo,设置 MentionedTypeMentionedType.ALL

    String targetId = "群组 Id";
    MentionedInfo mentionedInfo = new MentionedInfo(MentionedInfo.MentionedType.ALL, null, null);
  2. MentionedInfo 对象设置到 MessageContent 中。

    TextMessage messageContent = TextMessage.obtain(content);
    messageContent.setMentionedInfo(mentionedInfo);
    Message message = Message.obtain(targetId, ConversationType.GROUP, textMessage);
  3. 调用 Global IM UIKit 核心类 RongCoreClient 的方法发送消息。

RongCoreClient.getInstance().sendMessage(message, null , null, new IRongCoreCallback.ISendMessageCallback(){
@Override
public void onAttached(Message message) {

}

@Override
public void onSuccess(Message message) {

}

@Override
public void onError(Message message, IRongCoreEnum.CoreErrorCode coreErrorCode) {

}
});