环信即时通讯 IM SDK(Android)消息类型与发送示例
说明:以下通讯内容仅在业务代码调用对应发送接口时才会产生并上传至服务端;未调用相应 API 时不会触发对应类型的消息传输。
适用:Android 平台,Java API 以环信 Chat SDK 为准。
1. 文本消息(TXT)
用于传输文字内容。
EMMessage msg = EMMessage.createTextSendMessage("这是一条文字消息", to);
EMClient.getInstance().chatManager().sendMessage(msg);2. 图片消息(IMAGE)
用于传输图片;sendOriginalImage 为是否发送原图。
EMMessage msg = EMMessage.createImageSendMessage("/sdcard/pic.jpg", false, to);
EMClient.getInstance().chatManager().sendMessage(msg);3. 语音消息(VOICE)
用于传输语音文件;timeLength 为语音时长(秒)。
EMMessage msg = EMMessage.createVoiceSendMessage("/sdcard/voice.amr", 10, to);
EMClient.getInstance().chatManager().sendMessage(msg);4. 视频消息(VIDEO)
用于传输视频及缩略图;timeLength 为视频时长(秒)。
EMMessage msg = EMMessage.createVideoSendMessage( "/sdcard/demo.mp4", "/sdcard/demo_thumb.jpg", 30, to); EMClient.getInstance().chatManager().sendMessage(msg);
5. 文件消息(FILE)
用于传输任意文件。
EMMessage msg = EMMessage.createFileSendMessage("/sdcard/report.pdf", to);
EMClient.getInstance().chatManager().sendMessage(msg);6. 位置消息(LOCATION)
用于传输地理位置(经纬度与地址描述)。
EMMessage msg = EMMessage.createLocationSendMessage( 39.9042, 116.4074, "北京市东城区", to); EMClient.getInstance().chatManager().sendMessage(msg);
7. 透传 / 命令消息(CMD)
用于不下发历史、不入库的指令类消息(具体行为以 SDK 版本说明为准)。
EMMessage msg = EMMessage.createSendMessage(EMMessage.Type.CMD);
msg.setTo(to);
msg.addBody(new EMCmdMessageBody("action"));
EMClient.getInstance().chatManager().sendMessage(msg);8. 自定义消息(CUSTOM)
用于业务自定义事件与扩展字段。
EMMessage msg = EMMessage.createSendMessage(EMMessage.Type.CUSTOM);
String event = "gift";
EMCustomMessageBody body = new EMCustomMessageBody(event);
java.util.Map<String, String> params = new java.util.HashMap<>();
params.put("key1", "value1");
body.setParams(params);
msg.addBody(body);
msg.setTo(to);
msg.setChatType(EMMessage.ChatType.Chat);
EMClient.getInstance().chatManager().sendMessage(msg);9. 合并转发消息(COMBINE)
用于合并转发多条历史消息;messageIdList 为被合并消息 ID 列表。
java.util.List<String> ids = java.util.Arrays.asList("msgId1", "msgId2");
EMMessage msg = EMMessage.createCombinedSendMessage(
"聊天记录", "摘要", "兼容文本", ids, to);
EMClient.getInstance().chatManager().sendMessage(msg);类型与工厂方法对照(Android)
| 消息类型 | 主要创建方式 |
|---|---|
| TXT / 文本 | createTextSendMessage |
| IMAGE / 图片 | createImageSendMessage |
| VOICE / 语音 | createVoiceSendMessage |
| VIDEO / 视频 | createVideoSendMessage |
| FILE / 文件 | createFileSendMessage |
| LOCATION / 位置 | createLocationSendMessage |
| CMD / 命令 | createSendMessage(Type.CMD) + EMCmdMessageBody |
| CUSTOM / 自定义 | createSendMessage(Type.CUSTOM) + EMCustomMessageBody |
| COMBINE / 合并转发 | createCombinedSendMessage |