注册即时通讯云 注册客服云

环信即时通讯 IM SDK(iOS)消息类型与发送示例


说明:以下通讯内容仅在业务代码调用对应发送接口时才会产生并上传至服务端;未调用相应 API 时不会触发对应类型的消息传输。

适用:iOS 平台,Objective‑C API 以环信 Chat SDK 为准。

1. 文本消息

EMTextMessageBody *textBody = [[EMTextMessageBody alloc] initWithText:@"这是一条文字消息"];
EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:to body:textBody ext:nil];
[[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:nil];

2. 图片消息

EMImageMessageBody *imgBody = [[EMImageMessageBody alloc] initWithLocalPath:@"/path/pic.jpg" displayName:@"pic.jpg"];
EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:to body:imgBody ext:nil];
[[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:nil];

3. 语音消息

EMVoiceMessageBody *voiceBody = [[EMVoiceMessageBody alloc] initWithLocalPath:@"/path/a.aac" displayName:@"voice.aac"];
EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:to body:voiceBody ext:nil];
[[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:nil];

4. 视频消息

EMVideoMessageBody *videoBody = [[EMVideoMessageBody alloc] initWithLocalPath:@"/path/m.mp4" displayName:@"m.mp4"];
EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:to body:videoBody ext:nil];
[[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:nil];

5. 文件消息

EMFileMessageBody *fileBody = [[EMFileMessageBody alloc] initWithLocalPath:@"/path/f.pdf" displayName:@"f.pdf"];
EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:to body:fileBody ext:nil];
[[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:nil];

6. 位置消息

EMLocationMessageBody *locBody = [[EMLocationMessageBody alloc] initWithLatitude:39.9042 longitude:116.4074 address:@"北京市东城区"];
EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:to body:locBody ext:nil];
[[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:nil];

7. 透传 / 命令消息(CMD)

EMCmdMessageBody *cmdBody = [[EMCmdMessageBody alloc] initWithAction:@"action"];
EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:to body:cmdBody ext:nil];
[[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:nil];

8. 自定义消息(CUSTOM)

EMCustomMessageBody *customBody = [[EMCustomMessageBody alloc] initWithEvent:@"userCard"
                                                                              customExt:@{@"uid": @"10001",
                                                                                    @"nickname": @"环信用户",
                                                                                    @"avatar": @"https://example.com/avatar.png"}];
EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:to body:customBody ext:nil];
message.chatType = EMChatTypeChat;
[[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:nil];

9. 合并转发消息(COMBINE)

EMCombineMessageBody *combineMsgBody = [[EMCombineMessageBody alloc] initWithTitle:@"聊天记录"
                                                                           summary:@"A: 这是A的消息内容
B: 这是B的消息内容"
                                                                    compatibleText:@"您当前的版本不支持该消息,请升级到最新版本"
                                                                      messageIdList:@[@"messageId1", @"messageId2"]];
EMChatMessage *msg = [[EMChatMessage alloc] initWithConversationID:to body:combineMsgBody ext:nil];
[[EMClient sharedClient].chatManager sendMessage:msg progress:nil completion:nil];

类型与消息体对照(iOS)

消息类型 消息体类型(示例)
文本 EMTextMessageBody
图片 EMImageMessageBody
语音 EMVoiceMessageBody
视频 EMVideoMessageBody
文件 EMFileMessageBody
位置 EMLocationMessageBody
命令 EMCmdMessageBody
自定义 EMCustomMessageBody
合并转发 EMCombineMessageBody


申请试用

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

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

×

电话咨询

免费试用

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

注册享福利、赢好礼

立即体验