发送消息
IMKit 内置会话页面已实现了发送各类型消息的功能和 UI。当您在自定义页面需要发送消息时,可使用 IMKit 核心类 RongIM
下发送消息的方法。这些方法除了提供发送消息的功能外,还会触发 IMKit 内置页面的更新。
IMKit 支持发送普通消息和媒体类消息(参考消息介绍),普通消息父类是 MessageContent,媒体消息父类是 MediaMessageContent。发送媒体消息和普通消息本质的区别为是否有上传数据过程。
- 请务必使用 IMKit 核心类
RongIM
下发送消息的方法,否则不会触发页面刷新。 - 发送普通消息使用
sendMessage
方法,发送媒体消息使用sendMediaMessage
方法。 - IMKit SDK 发送消息存在频率限制,每秒最多只能发送 5 条消息。
构造消息
参考 构造消息
发送普通消息
发送消息前需要构造 Message 消息对象。消息的 content
属性中可包含两大类消息内容:普通消息内容和媒体消息内容。普通消息内容父类是 MessageContent,媒体消息内容父类是 MediaMessageContent。
当您调用 RongIM
的发送消息方法时,SDK 会触发内置的会话列表和会话页面的更新。
接口原型
public sendMessage(msg: Message): Promise<IAsyncResult<Message>>;
参数说明
参数名 | 类型 | 详细说明 |
---|---|---|
msg | Message | 要发送的消息对象 |
示例代码
let conId = new ConversationIdentifier();
conId.conversationType = ConversationType.Private
conId.targetId = "targetId"
let textMsg = new TextMessage();
textMsg.content = "内容";
RongIM.getInstance().messageService().sendMessage(new Message(conId, textMsg))
.then(result => {
if (EngineError.Success !== result.code) {
// 发送消息失败
return;
}
if (!result.data) {
// 消息数据为空
return;
}
let msg = result.data as Message;
})
发送媒体消息
媒体消息 Message 对象的 content
字段必须传入 MediaMessageContent 的子类对象,表示媒体消息内容。例如图片消息(ImageMessage)、GIF 消息(GIFMessage)等。其他内置媒体消息类型包括文件消息(FileMessage)、高清语音消息(HQVoiceMessage)、小视频消息(SightMessage),建议先集成相应的 IMKit 插件。
关于 IMKit SDK 内置媒体消息类型以及构造使用,可以参照 媒体消息
发送媒体消息需要使用 sendMediaMessage
方法。SDK 会为图片、小视频等生成缩略图,根据默认压缩配置进行压缩,再将图片、小视频等媒体文件上传到融云默认的文件服务器(文件存储时长),上传成功之后再发送消息。图片消息如已设置为发送原图,则不会进行压缩。
当您调用 RongIM
的发送消息方法时,SDK 会根据发送状态同步更新内置的会话列表和会话页面。