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