环信即时通讯 IM SDK(HarmonyOS)消息类型与发送示例
说明:以下通讯内容仅在业务代码调用对应发送接口时才会产生并上传至服务端;未调用相应 API 时不会触发对应类型的消息传输。
适用:HarmonyOS 平台,ArkTS API 以工程依赖的 @easemob/chatsdk 为准。
1. 文本消息(TXT)
用于传输文字内容。
import { ChatClient, ChatMessage } from '@easemob/chatsdk';
let msg = ChatMessage.createTextSendMessage(to, '这是一条文字消息');
if (msg) {
ChatClient.getInstance().chatManager()?.sendMessage(msg);
}2. 图片消息(IMAGE)
用于传输图片;仅需接收方 ID 与本地文件路径。
import { ChatClient, ChatMessage } from '@easemob/chatsdk';
let msg = ChatMessage.createImageSendMessage(to, '/path/picture.jpg');
if (msg) {
ChatClient.getInstance().chatManager()?.sendMessage(msg);
}3. 语音消息(VOICE)
用于传输语音;duration 为时长(秒)。
import { ChatClient, ChatMessage } from '@easemob/chatsdk';
let msg = ChatMessage.createVoiceSendMessage(to, '/path/voice.mp3', 10);
if (msg) {
ChatClient.getInstance().chatManager()?.sendMessage(msg);
}4. 视频消息(VIDEO)
用于传输视频;第三参数为时长(秒),第四参数可选,为视频首帧/缩略图本地路径(见 ChatMessage.d.ets)。
import { ChatClient, ChatMessage } from '@easemob/chatsdk';
let msg = ChatMessage.createVideoSendMessage(to, '/path/video.mp4', 30, '/path/thumb.jpg');
if (msg) {
ChatClient.getInstance().chatManager()?.sendMessage(msg);
}5. 文件消息(FILE)
用于传输任意文件。
import { ChatClient, ChatMessage } from '@easemob/chatsdk';
let msg = ChatMessage.createFileSendMessage(to, '/path/report.pdf');
if (msg) {
ChatClient.getInstance().chatManager()?.sendMessage(msg);
}6. 位置消息(LOCATION)
用于传输地理位置;参数依次为接收方 ID、纬度、经度和位置描述。
import { ChatClient, ChatMessage } from '@easemob/chatsdk';
let msg = ChatMessage.createLocationSendMessage(
to, 39.9042, 116.4074, '北京市东城区');
if (msg) {
ChatClient.getInstance().chatManager()?.sendMessage(msg);
}7. 透传 / 命令消息(CMD)
SDK 未提供 createCmdSendMessage 静态方法;使用 CmdMessageBody + ChatMessage.createSendMessage,并指定 ChatType。
import { ChatClient, ChatMessage, ChatType, CmdMessageBody } from '@easemob/chatsdk';
let body = new CmdMessageBody('myAction');
let msg = ChatMessage.createSendMessage(to, body, ChatType.Chat);
if (msg) {
ChatClient.getInstance().chatManager()?.sendMessage(msg);
}8. 自定义消息(CUSTOM)
使用 CustomMessageBody 设置 event 与键值对参数,再通过 createSendMessage 发送。
import { ChatClient, ChatMessage, ChatType, CustomMessageBody } from '@easemob/chatsdk';
let body = new CustomMessageBody('gift');
let params = new Map<string, string>();
params.set('key1', 'value1');
body.setParams(params);
let msg = ChatMessage.createSendMessage(to, body, ChatType.Chat);
if (msg) {
ChatClient.getInstance().chatManager()?.sendMessage(msg);
}9. 合并转发消息(COMBINE)
用于合并转发多条历史消息;messageIds 为被合并消息 ID 数组。
import { ChatClient, ChatMessage } from '@easemob/chatsdk';
let title = 'A和B的聊天记录';
let summary = 'A:这是A的消息内容
B:这是B的消息内容';
let compatibleText = '您当前的版本不支持该消息,请升级到最新版本';
let msg = ChatMessage.createCombinedSendMessage(title, {
summary,
compatibleText,
messageIds: ['msgId1', 'msgId2']
});
ChatClient.getInstance().chatManager()?.sendMessage(msg);类型与创建方法对照(HarmonyOS)
| 消息类型 | 主要创建方式 |
|---|---|
| 文本 | createTextSendMessage(to, message) |
| 图片 | createImageSendMessage(to, filePath) |
| 语音 | createVoiceSendMessage(to, filePath, duration) |
| 视频 | createVideoSendMessage(to, filePath, duration, thumbPath?) |
| 文件 | createFileSendMessage(to, filePath) |
| 位置 | createLocationSendMessage(to, lat, lng, addr) |
| 命令 | new CmdMessageBody + createSendMessage(to, body, ChatType) |
| 自定义 | new CustomMessageBody + setParams + createSendMessage |
| 合并转发 | createCombinedSendMessage(title, { summary, compatibleText, messageIds }) |