@ 消息

提示

2.6.8 版本开始支持在群组中实现 @ 功能,可以 @ 指定用户或 @ 所有人。

1、开启 @ 功能

默认为关闭状态,设置 rc_config.xml 中的 rc_enable_mentioned_message 为 true 可开启 @ 功能。

2、设置 @ 成员信息提供者

在会话 activity,通过 RongIM.getInstance().setGroupMembersProvider(String groupId, RongIM.IGroupMemberCallback) 来设置 @ 成员信息提供者。

可以参考 SealTalk 中的 ConversationActivity 来实现。

在 activity 的 onCreate 里设置 @ 群组信息提供者:

RongIM.getInstance().setGroupMembersProvider(new RongIM.IGroupMembersProvider() {
    @Override
    public void getGroupMembers(String groupId, RongIM.IGroupMemberCallback callback) {
        ... //获取群组成员信息列表
        callback.onGetGroupMembersResult(list); // 调用 callback 的 onGetGroupMembersResult 回传群组信息
    }
});

3、@ 成员列表界面自定义

打开 @ 功能开关后,长按头像 @ 某人或者输入 @ 字符,会弹出成员列表页面,此列表可以自定义。

自定义步骤如下:

a. RongMentionManager.setMentionedInputListener(IMentionedInputListener listener) 设置 @ 字符输入监听器。

b. 在监听器的回调 onMentionedInput() 里跳转到自定义的 @ 成员选择界面,并返回 true 。

c. 在成员选择界面,选择成员后,调用mentionMember方法返回所选成员信息。

RongMentionManager.getInstance().mentionMember(item.userInfo);

d. IMentionedInputListener 说明:

public interface IMentionedInputListener {

    /**
     * 当启动@功能,即在rc_config.xml中设置rc_enable_mentioned_message 为true后,该方法用于设置在群组中,输入@时的监听。
     * 如果{@link IMentionedInputListener#onMentionedInput(Conversation.ConversationType, String)}返回true, 则您自己处理显示@成员
     * 的选择界面;如果返回false, 则会显示融云SDK默认@成员选择界面。
     *
     * @param conversationType 会话类型
     * @param targetId         会话 id
     * @return 返回true, 则您自己处理显示 @ 成员的选择界面;如果返回false, 则会显示融云SDK默认@成员选择界面。
     */
    boolean onMentionedInput(Conversation.ConversationType conversationType, String targetId);
}

4、@ 所有人功能

@ 所有人时需要新建一个 MentionedType 为 MentionedType.ALL的MentionedInfo ,并把它设置到 MessageContent中,例:

MentionedInfo mentionedInfo = new MentionedInfo(MentionedInfo.MentionedType.ALL, null, null);
textMessage.setMentionedInfo(mentionedInfo);
RongIM.getInstance().sendMessage(…);
也可以参考 SealTalk 中的 GroupNoticeActivity 来实现。

提示

@ 消息推送会越过所有免打扰逻辑,给用户推送 Push 通知。