NERoom 房间组件
Android
动态与公告
更新日志
产品简介
产品介绍
功能特性
产品优势
使用限制
快速开始
接入流程
开通 NERoom 房间组件
下载 SDK和 Demo
集成 SDK
初始化SDK
搭建直播间
账号集成与登录
房间管理
创建房间
进入房间
监听房间事件
离开房间
删除房间
房间属性
成员管理
查询房间成员信息
移除成员
成员属性
修改成员角色
即时消息
进入和离开聊天室
消息发送
消息接收
音视频通话
加入和退出音视频房间
设置音频属性
本地视频预览
静音和取消静音
开启和关闭视频
屏幕共享
虚拟背景
云信美颜
第三方美颜
伴音和音效
耳返
麦位管理
互动白板
直播
场景实践
PK 直播组件
会议组件
语聊房组件
最佳实践
超大房间直播互动
复用 IM 的账号
错误码
常见问题

消息发送

更新时间: 2022/10/31 15:24:28

本文主要介绍如何通过 NERoom SDK 在房间内实现聊天室消息的发送。

功能介绍

消息类型

类型
描述
文本消息 文本消息的内容是文本,可以包含超链接、emoji 表情符号等。表情消息是基于文本消息实现的。 文本消息大小限制为 5 KB。
多媒体消息 多媒体消息包括文件消息和图片消息。
自定义消息 开发者自定义的消息类型,例如红包消息、石头剪子布等形式的消息。目前仅支持 RESTful API 发送自定义消息。

功能原理

消息收发.png

消息收发流程如下

  1. 房间内的用户 A 发送一条消息到云信的 NERoom IM 服务器。
  2. IM服务器投递给房间内聊天室内的其他成员。如果消息为广播消息,则全员投递,如果为定向消息,则仅投递指定的成员。
  3. 目标用户收到消息。

注意事项

  • 用户只有加入聊天室后,才能发送消息。
  • 最新版本可支持文本消息、自定义消息、图片消息以及文件消息,暂不支持语音消息、视频消息等其他类型的消息。

给单人发送文本消息

配置步骤

  1. 调用 getRoomContext 接口,获取房间上下文。

    调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。

  2. 调用 sendDirectTextMessage 接口,定向给某个人发送文本消息。相关参数说明如下表所示。

    名称 类型 描述
    userUuid String 消息接收方的用户 ID
    message String 文本消息的内容

示例代码

实现给单人发送消息的示例代码如下:

       NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
        NERoomContext roomContext = roomService.getRoomContext(roomUuid);
        if (roomContext!=null){
            String targetUserUuid="";
            String message="broadcast text message";
            roomContext.getChatController().sendDirectTextMessage(targetUserUuid,message, new NECallback2<Unit>() {
                @Override
                public void onSuccess(@Nullable Unit unit) {
                    super.onSuccess(unit);
                    Log.d(TAG,"success");
                }

                @Override
                public void onError(int code, @Nullable String message) {
                    super.onError(code, message);
                    Log.d(TAG,"error");
                }
            });
        }

给多人发送文本消息

配置步骤

  1. 调用 getRoomContext 接口,获取房间上下文。

    调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。

  2. 调用 sendGroupTextMessage 接口,给多人发送文本消息。相关参数说明如下表所示。

    名称 类型 描述
    userUuids List 消息接收方的用户 ID。
    message String 文本消息内容

示例代码

实现给多人发送消息的示例代码如下:

        NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
        NERoomContext roomContext = roomService.getRoomContext(roomUuid);
        if (roomContext!=null){
            ArrayList<String> uerUuids=new ArrayList<>();
            uerUuids.add("userUuid1");
            uerUuids.add("userUuid2");
            String message="broadcast text message";
            roomContext.getChatController().sendGroupTextMessage(uerUuids,message, new NECallback2<Unit>() {
                @Override
                public void onSuccess(@Nullable Unit unit) {
                    super.onSuccess(unit);
                    Log.d(TAG,"success");
                }

                @Override
                public void onError(int code, @Nullable String message) {
                    super.onError(code, message);
                    Log.d(TAG,"error");
                }
            });
        }

发送广播文本消息

配置步骤

  1. 调用 getRoomContext 接口,获取房间上下文。

    调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。

  2. 调用 sendBroadcastTextMessage 接口,向全员发送广播文本消息。相关参数说明如下表所示。

    名称 描述
    message 文本消息内容

示例代码

实现发送广播消息的示例代码如下:

      NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
        NERoomContext roomContext = roomService.getRoomContext(roomUuid);
        if (roomContext!=null){
            String message="broadcast text message";
            roomContext.getChatController().sendBroadcastTextMessage(message, new NECallback2<Unit>() {
                @Override
                public void onSuccess(@Nullable Unit unit) {
                    super.onSuccess(unit);
                    Log.d(TAG,"success");
                }

                @Override
                public void onError(int code, @Nullable String message) {
                    super.onError(code, message);
                    Log.d(TAG,"error");
                }
            });
        }

发送图片消息

配置步骤

  1. 调用 getRoomContext 接口,获取房间上下文。

    调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。

  2. 监听消息附件上传进度。

  3. 调用 sendImageMessage 接口,发送图片消息。相关参数说明如下表所示。

    名称 描述
    messageUuid 消息标识,可用于监听该消息附件上传的进度,可通过 [UUID.randomUUID()] 生成。
    imagePath 图片路径。
    userUuids 用户 ID 列表。
    如果 userUuids 为空,表示发送全员消息。
    如果 userUuids 不为空,表示给单人或多人发送消息。
    callback 回调。

示例代码

实现发送图片消息的示例代码如下:

        NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
        NERoomContext roomContext = roomService.getRoomContext(roomUuid);
        if (roomContext!=null){
            String msgUuid = UUID.randomUUID();
            roomContext.addRoomListener(new RoomListener() {
                @Override
                public void onChatroomMessageAttachmentProgress(String messageUuid , long transferred, long total) {
                    if (msgUuid.equals(messageUuid)) {
                        //todo:处理消息上传进度
                    }
                }
            });

            String imagePath = "/sdcard/image.png";
            List<String> userUuids = null; // 空表示全员广播消息;如果指定了成员列表,则为定向消息
            roomContext.getChatController().sendImageMessage(msgUuid, imagePath, userUuids, new NECallback2<Unit>() {
                @Override
                public void onSuccess(@Nullable Unit unit) {
                    super.onSuccess(unit);
                    Log.d(TAG,"success");
                }

                @Override
                public void onError(int code, @Nullable String message) {
                    super.onError(code, message);
                    Log.d(TAG,"error");
                }
            });
        }

发送文件消息

配置步骤

  1. 调用 getRoomContext 接口,获取房间上下文。

    调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。

  2. 监听消息附件上传进度。

  3. 调用 sendFileMessage 接口,发送图片消息。相关参数说明如下表所示。

    名称 描述
    messageUuid 消息标识,可用于监听该消息附件上传的进度,可通过 [UUID.randomUUID()] 生成
    filePath 文件路径
    userUuids 用户 ID 列表。
    如果 userUuids 为空,表示发送全员消息。
    如果 userUuids 不为空,表示给单人或多人发送消息。
    callback 回调

示例代码

实现发送文件消息的示例代码如下:

        NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
        NERoomContext roomContext = roomService.getRoomContext(roomUuid);
        if (roomContext!=null){
            String msgUuid = UUID.randomUUID();
            roomContext.addRoomListener(new RoomListener() {
                @Override
                public void onChatroomMessageAttachmentProgress(String messageUuid , long transferred, long total) {
                    if (msgUuid.equals(messageUuid)) {
                        //todo:处理消息上传进度
                    }
                }
            });

            String filePath = "/sdcard/word.docx";
            List<String> userUuids = null; // 空表示全员广播消息;如果指定了成员列表,则为定向消息
            roomContext.getChatController().sendFileMessage(msgUuid, filePath, userUuids, new NECallback2<Unit>() {
                @Override
                public void onSuccess(@Nullable Unit unit) {
                    super.onSuccess(unit);
                    Log.d(TAG,"success");
                }

                @Override
                public void onError(int code, @Nullable String message) {
                    super.onError(code, message);
                    Log.d(TAG,"error");
                }
            });
        }

API 参考

方法 功能描述
sendBroadcastTextMessage 发送广播文本消息。
sendDirectTextMessage 发送定向文本消息。
sendGroupTextMessage 给多人发送文本消息。
sendImageMessage 发送图片消息。
sendFileMessage 发送文件消息。
此文档是否对你有帮助?
有帮助
我要吐槽
  • 功能介绍
  • 消息类型
  • 功能原理
  • 注意事项
  • 给单人发送文本消息
  • 配置步骤
  • 示例代码
  • 给多人发送文本消息
  • 配置步骤
  • 示例代码
  • 发送广播文本消息
  • 配置步骤
  • 示例代码
  • 发送图片消息
  • 配置步骤
  • 示例代码
  • 发送文件消息
  • 配置步骤
  • 示例代码
  • API 参考