消息接收
更新时间: 2024/01/11 08:39:32
本文主要介绍如何通过 NERoom SDK 在房间内实现消息的接收。
功能介绍
消息类型
类型 |
描述 |
---|---|
文本消息 | 文本消息的内容是文本,可以包含超链接、emoji 表情符号等。表情消息是基于文本消息实现的。 文本消息大小限制为 5 KB。 |
多媒体消息 | 多媒体消息包括文件消息和图片消息。 |
自定义消息 | 开发者自定义的消息类型,例如红包消息、石头剪子布等形式的消息。目前仅支持 RESTful API 发送自定义消息。 |
功能原理
消息收发流程如下:
- 房间内的用户 A 发送一条消息到云信的 NERoom IM 服务器。
- IM服务器投递给房间内聊天室内的其他成员。如果消息为广播消息,则全员投递,如果为定向消息,则仅投递指定的成员。
- 目标用户收到消息。
注意事项
- 用户只有加入聊天室后,才能接收消息。
- 本版本只支持文本消息和自定义消息,不支持图片消息、语音消息、视频消息等其他类型的消息。
接收文本消息
配置步骤
- 添加房间消息接收的监听。
swiftfunc addRoomListener(listener: NERoomListener)
- 实现消息接收。
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
}
}
}
接收图片、文件消息
配置步骤
- 调用如下接口添加消息接收的监听以及消息附件下载进度监听。
swift func addRoomListener(listener: NERoomListener)
- 在消息回调中对接收到的消息过滤出图片、文件消息。
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 | 消息的相关信息 |
- 调用接口进行消息附件的下载。
swiftfunc downloadAttachment(_ messageUuid: String, callback: NECallback<Unit>?)
如需取消下载,可调用如下接口:
swiftfunc cancelDownloadAttachment(_ messageUuid: String, callback: NECallback<Unit>?)
- 调用下载附件,会触发 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 |
取消下载图片、文件消息的附件。 |
此文档是否对你有帮助?