注册即时通讯云 注册客服云
环信即时通讯 IM SDK(HarmonyOS)消息类型与发送示例

环信即时通讯 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(&#x27;key1&#x27;, &#x27;value1&#x27;);
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 &#x27;@easemob/chatsdk&#x27;;
let title = &#x27;A和B的聊天记录&#x27;;
let summary = &#x27;A:这是A的消息内容
B:这是B的消息内容&#x27;;
let compatibleText = &#x27;您当前的版本不支持该消息,请升级到最新版本&#x27;;
let msg = ChatMessage.createCombinedSendMessage(title, {
  summary,
  compatibleText,
  messageIds: [&#x27;msgId1&#x27;, &#x27;msgId2&#x27;]
});
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 })

申请试用

提交后工作人员会尽快与您联系进行功能演示
技术咨询已转移到管理后台,请先登录

即时通讯云使用者请在应用详情页面咨询
客服云使用者请进入管理员模式咨询

×

电话咨询

注册客服

注册IM

环信即时通讯云——100注册用户永久免费
环信MQTT——免费开通 每月赠送额度
环信PUSH——1000个DAU免费

注册享福利、赢好礼

立即体验