消息接收

更新时间: 2024/01/11 08:39:32

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

功能介绍

消息类型

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

功能原理

消息收发.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. 调用如下接口添加消息接收的监听以及消息附件下载进度监听。
swift  func addRoomListener(listener: NERoomListener)
  1. 在消息回调中对接收到的消息过滤出图片、文件消息。
swift  public 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
      }
    }
  }
名称 类型 描述
messages NERoomChatMessage 消息的相关信息
  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文档