发送消息
本文主要描述了如何使用 IMLib SDK 向单聊会话、群聊会话、聊天室会话中发送消息。
消息内容类型简介
IMLib SDK 定义的 Message 对象的 content 属性中可包含两大类消息内容:普通消息内容和媒体消息内容。普通消息内容父类是 MessageContent,媒体消息内容父类是 MediaMessageContent。发送媒体消息和普通消息本质的区别为是否有上传数据过程。
| 功能 | 消息内容的类型 | 父类 | 描述 |
|---|---|---|---|
| 文本消息 | TextMessage | MessageContent | 文本消息的内容。 |
| 图片消息 | ImageMessage | MediaMessageContent | 图片消息的内容,支持发送原图。 |
| 文件消息 | FileMessage | MediaMessageContent | 文件消息的内容。 |
| 语音消息 | HQVoiceMessage | MediaMessageContent | 高清语音消息的内容。 |
| 提及他人(@ 消息) | 不适用 | 不适用 | @消息并非预定义的消息类型。详见如何发送 @ 消息。 |
以上为 IMLib SDK 内置的部分消息内容类型。您还可以创建自定义的消息内容类型,并使用 sendMessage 方法或 sendMediaMessage 方法发送。详见自定义消息类型。
提示
- 发送普通消息请使用
sendMessage方法,发送媒体消息请使用sendMediaMessage方法。 - 客户端 SDK 发送消息存在频率限制,每秒最多只能发送 5 条消息。
本文使用 IMLib SDK 核心类 IMEngine 的发送消息方法。
普通消息
普通消息指文本消息等不涉及媒体文件上传的消息。普通消息的消息内容为 MessageContent 的子类的消息,例如文本消息内容(TextMessage),或自定义类型的普通消息内容。
构造普通消息
您在发送普通消息前,需要先构造 Message 对象。conversationType 字段为会话类型,targetId 表示会话的目标 ID。以下示例中构造了一条包含文本消息内容(TextMessage)的消息对象。
构造文本消息示例代码
TypeScript
let conId = new ConversationIdentifier();
conId.conversationType = ConversationType.Private;
conId.targetId = "会话 id";
let textMsg = new TextMessage();
textMsg.content = "文本消息的内容";
let msg = new Message(conId, textMsg);
构造命令消息示例代码
提示
- 1.2.0 版本开始支持 CommandMessage 消息。
- CommandMessage 不存储不计数,通常由 App 服务发送,不会在 UI 上展示。
TypeScript
let cmdMsg = new CommandMessage();
cmdMsg.name = "命名名称";
cmdMsg.data = "命令数据,可以放 json 串";
构造命令提醒消息示例代码
提示
- 1.2.0 版本开始支持 CommandNotificationMessage 消息。
- CommandNotificationMessage 命令提醒消息类,一般在 UI 上当做小灰条消息展示。
TypeScript
let cmdMsg = new CommandNotificationMessage();
cmdMsg.name = "命名名称";
cmdMsg.data = "命令数据,可以放 json 串";
构造引用消息示例代码
提示
- 1.2.0 版本开始支持 ReferenceMessage 消息。
TypeScript
// 此处的 message 对象必须是发送成功的消息或者是接收的消息,此处进行简写
let message : Message ;
let referMsg = new ReferenceMessage();
referMsg.content = "发送的文本内容";
referMsg.referMsgUserId = message.senderId; // 被引用消息的发送者 ID
referMsg.objName = message.objectName; // 被引用的消息 objectName
referMsg.referMsg = message.content; // 被引用的消息体
referMsg.referMsgUid = message.messageUid; // 被引用消息的 messageUId
构造图文消息示例代码
提示
- 1.2.0 版本开始支持 RichContentMessage 消息。
TypeScript
let richMsg = new RichContentMessage();
richMsg.title = "图文消息的标题";
richMsg.content = "图文消息的内容摘要";
richMsg.imgUrl = "图文消息图片 URL";
richMsg.url = "图文消息中包含的需要跳转到的 URL";