消息接收

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

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

功能介绍

消息表示发送方给接收方发送的内容。

消息类型

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

功能原理

消息收发.png

消息收发流程如下

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

注意事项

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

接收文本消息

配置步骤

  1. 调用如下接口添加消息接收的监听。
  fun addRoomListener(listener: NERoomListener)
  1. 调用如下接口实现消息接收。
  fun onReceiveChatroomMessages(messages: List<NERoomChatMessage>)
名称 类型 描述
message NERoomChatMessage 消息的相关信息

示例代码

实现消息接收的示例代码如下:

   NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
        NERoomContext roomContext = roomService.getRoomContext(roomUuid);
        if (roomContext != null) {
             roomContext.addRoomListener(new NERoomListener() {
                 @Override
                 public void onReceiveChatroomMessages(@NonNull List<? extends NERoomChatMessage> messages) {
                     for (NERoomChatMessage message : messages) {
                         if (message instanceof NERoomChatTextMessagee){
                             Log.d(TAG,"text:"+((NERoomChatTextMessage) message).getText());
                         }
                     }
                 }
             });
        }

接收图片、文件消息

配置步骤

  1. 调用如下接口添加消息接收的监听以及消息附件下载进度监听。
  fun addRoomListener(listener: NERoomListener)
  1. 在消息回调中对接收到的消息过滤出图片、文件消息。
  fun onReceiveChatroomMessages(messages: List<NERoomChatMessage>)
名称 类型 描述
message NERoomChatMessage 消息的相关信息
  1. 调用如下接口进行消息附件的下载。
fun downloadAttachment(messageUuid: String, callback: NECallback<Unit>?)

如需取消下载,可调用如下接口:

fun cancelDownloadAttachment(messageUuid: String, callback: NECallback<Unit>?)

示例代码

实现消息接收的示例代码如下:

        NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
        NERoomContext roomContext = roomService.getRoomContext(roomUuid);
        if (roomContext != null) {
             roomContext.addRoomListener(new NERoomListener() {
                 @Override
                 public void onReceiveChatroomMessages(@NonNull List<? extends NERoomChatMessage> messages) {
                     for (NERoomChatMessage message : messages) {
                         if (message instanceof NERoomChatImageMessage || message instanceof NERoomChatFileMessage){
                             roomContext.getChatController().downloadAttachment(message.messageUuid, callback)
                         }
                     }
                 }

                 @Override
                 public void onChatroomMessageAttachmentProgress(String messageUuid , long transferred, long total) {
                      //todo:处理文件、图片消息下载进度
                 }
             });
        }

相关API文档

方法 功能描述
onReceiveChatroomMessages 接收聊天室消息。
addRoomListener 添加房间事件监听。
downloadAttachment 下载消息附件
cancelDownloadAttachment 取消下载消息附件
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 消息类型
  • 功能原理
  • 注意事项
  • 接收文本消息
  • 配置步骤
  • 示例代码
  • 接收图片、文件消息
  • 配置步骤
  • 示例代码
  • 相关API文档