发送消息
本文主要描述了如何使用 IMLib SDK 向单聊会话、群聊会话、聊天室会话中发送消息。
提示
消息内容类型简介
IMLib SDK 定义的 Message 对象的 content 属性中可包含两大类消息内容:普通消息内容和媒体消息内容。普通消息内容父类是 MessageContent,媒体消息内容父类是 MediaMessageContent。发送媒体消息和普通消息本质的区别为是否有上传数据过程。
| 功能 | 消息内容的类型 | 父类 | 描述 |
|---|---|---|---|
| 文本消息 | TextMessage | MessageContent | 文本消息的内容。 |
| 引用回复 | ReferenceMessage | MessageContent | 引用消息的内容,用于实现引用回复功能。 |
| 图片 消息 | ImageMessage | MediaMessageContent | 图片消息的内容,支持发送原图。 |
| GIF 消息 | GIFMessage | MediaMessageContent | GIF 消息的内容。 |
| 文件消息 | FileMessage | MediaMessageContent | 文件消息的内容。 |
| 语音消息 | HQVoiceMessage | MediaMessageContent | 高清语音消息的内容。 |
| 提及他人(@ 消息) | 不适用 | 不适用 | @消息并非预定义的消息类型。详见如何发送 @ 消息。 |
以上为 IMLib SDK 内置的部分消息内容类型。您还可以创建自定义的消息内容类型,并使用 sendMessage 方法或sendMediaMessage 方法发送。详见自定义消息类型。
重要
- 发送普通消息使用
sendMessage方法,发送媒体消息使用sendMediaMessage方法。- 客户端 SDK 发送消息存在频率限制,每秒最多只能发送 5 条消息。
本文使用 IMLib SDK 核心类 RongCoreClient(也可以用 RongIMClient)的发送消息方法。
普通消息
普通消息指文本消息、引用消息等不涉及媒体文件上传的消息。普通消息的消息内容为 MessageContent 的子类的消息,例如文本消息内容(TextMessage),或自定义类型的普通消息内容。
构造普通消息
在发送前,需要先构造 Message 对象。conversationType 字段为会话类型。targetId 表示会话的目标 ID。以下示例中构造了一条包含文本消息内容(TextMessage)的消息对象。
Java
String targetId = "Target ID";
ConversationType conversationType = Conversation.ConversationType.PRIVATE;
TextMessage messageContent = TextMessage.obtain("消息内容");
Message message = Message.obtain(targetId, conversationType, messageContent);
发送普通消息
如果 Message 对象包含普通消息内容,使用 IMLib SDK 核心类 RongCoreClient(也可以用 RongIMClient)的 sendMessage 方法发送消息。
Java
String pushContent = null;
String pushData = null;
RongCoreClient.getInstance().sendMessage(message, pushContent, pushData, new IRongCoreCallback.ISendMessageCallback() {
@Override
public void onAttached(Message message) {
}
@Override
public void onSuccess(Message message) {
}
@Override
public void onError(Message message, IRongCoreEnum.CoreErrorCode coreErrorCode) {
}
});
sendMessage 方法中直接提供了用于控制推送通知内容(pushContent)和推送附加信息(pushData)的参数。另一种方式是使用消息推送属性配置 MessagePushConfig