聊天室消息接收

更新时间: 2025/05/27 17:37:34

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

功能介绍

消息类型

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

功能原理

消息收发.png

消息收发流程如下

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

注意事项

  • 用户只有加入聊天室后,才能接收消息。
  • 本版本只支持文本消息和自定义消息,不支持图片消息、语音消息、视频消息等其他类型的消息。

接收文本消息

配置步骤

  1. 添加房间消息接收的监听。
swiftfunc addRoomListener(listener: NERoomListener)
  1. 实现消息接收。
swiftonReceiveChatroomMessages(messages: [NERoomChatMessage])
名称 类型 描述
messages NERoomChatMessage 聊天室消息列表。

示例代码

实现添加房间消息监听的示例代码如下:

swiftlet roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "xx")

guard let roomContext = roomContext else {
    return
}
roomContext.addRoomListener(listener: Object)

// 实现 NERoomListener方法
public func onReceiveChatroomMessages(messages: [NERoomChatMessage]) {
  for message in messages {
    switch message.messageType {
    // 文本消息
    case .text:
      if let msg = message as? NERoomChatTextMessage {
        print("消息内容: \(msg.text)")
      }
    default: break
    }
  }
}

接收图片、文件消息

配置步骤

  1. 调用如下接口添加消息接收的监听以及消息附件下载进度监听。
swiftfunc addRoomListener(listener: NERoomListener)
  1. 在消息回调中对接收到的消息过滤出图片、文件消息。
swiftpublic func onReceiveChatroomMessages(messages: [NERoomChatMessage]) {
  for message in messages {
    switch message.messageType {
    case .image:
      if let msg = message as? NERoomChatImageMessage {
        print("图片链接: \(msg.url)")
      }
    case .file:
      if let msg = message as? NERoomChatFileMessage {
        print("文件链接: \(msg.url)")
      }
    default: break
    }
  }
}
  1. 调用接口进行消息附件的下载。
swiftfunc downloadAttachment(_ messageUuid: String, callback: NECallback<Unit>?)

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

swiftfunc cancelDownloadAttachment(_ messageUuid: String, callback: NECallback<Unit>?)
  1. 调用下载附件,会触发 NERoomListener协议的 onChatroomMessageAttachmentProgress 进度回调接口:
swiftfunc onChatroomMessageAttachmentProgress(messageUuid: String, transferred: Int64, total: Int64)

示例代码

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

swift    let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "xx")

    guard let roomContext = roomContext else {
      return
    }
    // 下载附件
    roomContext.chatController.downloadAttachment("messageUuid") { code, msg, _ in
      if code == 0 {
        print("Successfully download attachment.")
      } else {
        print("Failed to download attachment. Code: \(code). Msg: \(msg ?? "")")
      }
    }
    // 取消下载附件
    roomContext.chatController.cancelDownloadAttachment("messageUuid") { code, msg, _ in
      if code == 0 {
        print("Successfully cancel download  attachment.")
      } else {
        print("Failed to cancel download attachment. Code: \(code). Msg: \(msg ?? "")")
      }
    }

相关 API 文档

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