发送消息
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 会根据发送状态同步更新内置的会话列表和会话页面。