- Android
- iOS
- JavaScript
参数说明
名称 | 类型 | 描述 | 版本 |
---|---|---|---|
content | MessageContent | 消息实体 | 1.0.0 |
conversation | Conversation | 会话标识 | 1.0.0 |
callback | ISendMessageCallback | 回调 | 1.0.0 |
示例代码
TextMessage text = new TextMessage("Text message");
Conversation conversation = new Conversation(Conversation.ConversationType.PRIVATE, "userid1");
IMessageManager.ISendMessageCallback callback = new IMessageManager.ISendMessageCallback() {
@Override
public void onSuccess(Message message) {
Log.i("TAG", "send message success");
}
@Override
public void onError(Message message, int errorCode) {
Log.i("TAG", "send message error, code is " + errorCode);
}
};
Message message = JIM.getInstance().getMessageManager().sendMessage(text, conversation, callback);
Log.i("TAG", "after send, clientMsgNo is " + message.getClientMsgNo());
参数说明
名称 | 类型 | 描述 | 版本 |
---|---|---|---|
content | JMessageContent | 消息实体 | 1.0.0 |
conversation | JConversation | 会话标识 | 1.0.0 |
successBlock | 成功回调 | 1.0.0 | |
errorBlock | 失败回调 | 1.0.0 |
示例代码
//文本消息
JConversation *conversation = [[JConversation alloc] initWithConversationType:JConversationTypePrivate conversationId:@"userid2"];
JTextMessage *text = [[JTextMessage alloc] initWithContent:@"test text message"];
JMessage *m = [JIM.shared.messageManager sendMessage:text
inConversation:conversation
success:^(JMessage *message) {
NSLog(@"sendMessage success");
} error:^(JErrorCode errorCode, JMessage *message) {
NSLog(@"sendMessage error");
}];
NSLog(@"after send, m.clientMsgNo is %lld", m.clientMsgNo);
参数说明
名称 | 类型 | 必填 | 默认值 | 描述 | 版本 |
---|---|---|---|---|---|
message | Object | 是 | 消息对象 | 1.0.0 | |
message.conversationType | Number | 是 | 会话类型 | 1.0.0 | |
message.conversationId | String | 是 | 会话 Id,会话类型是 PRIVATE 时,会话 Id 是接收方的 userId,会话类型是 GROUP 时是群组 Id | 1.0.0 | |
message.name | String | 是 | 消息名称,根据实际需要发送不同消息类型,详细枚举请查看 MessageType | 1.0.0 | |
message.content | Object | 是 | 消息内容,构建 message.name 消息 | 1.0.0 | |
message.referMsg | Object | 否 | 无 | 引用回复消息,参数要求是完整的 Message | 1.0.0 |
message.mentionInfo | Object | 否 | 无 | conversationType 为 GROUP 时有效,设置 mentionInfo 表示本条消息是 @ 消息 | 1.0.0 |
mentionInfo.mentionType | Number | 否 | 无 | @ 类型,详细可查看 @ 消息枚举 说明 | 1.0.0 |
mentionInfo.members | Array | 否 | 无 | @ 指定人列表,SDK 会优先根据 @ 消息枚举 判断消息的 @ 类型 | 1.0.0 |
callbacks 参数说明
名称 | 类型 | 必填 | 默认值 | 描述 | 版本 |
---|---|---|---|---|---|
callbacks | Object | 否 | 回调对象 | 1.0.0 | |
callbacks.onbefore | Function | 否 | 消息发送前回调,此方法触发后会返回临时消息标识 tid ,可向页面渲染消息,消息发送成功后台根据 tid 更新消息状态 | 1.0.0 |
成功回调
名称 | 类型 | 描述 | 版本 |
---|---|---|---|
message | Object | 发送成功后返回带 messageId 和 sentTime 消息对象,消息结构请查看 Message | 1.0.0 |
特殊说明:
IM Server 支持发送时拦截替换消息,例如发送 图片消息
,IM Server
支持将 图片消息
替换为 文本消息
,收发双方表现如下:
接收方:看到的是替换后的
文本消息
发送方:当前端收到会在消息成功回调中返回替换后的新消息,
message.name
和message.content
会替换成新内容,messageId
和sentTime
处理逻辑不变。
失败回调
名称 | 类型 | 描述 | 版本 |
---|---|---|---|
result | Object | 发送失败后会返回对象中包含 tid 属性信息,同时包含 error 信息,可以直接查看 error.msg ,或者查看 状态码 | 1.0.0 |
示例代码
let { ConversationType, MessageType, MentionType } = JIM;
let msg = {
conversationType: ConversationType.GROUP,
conversationId: 'groupid1',
name: MessageType.TEXT,
content: {
content: 'hello world'
},
mentionInfo: {
mentionType: MentionType.ALL,
members: [{ id: 'userid2' }]
}
};
let callbacks = {
onbefore: (message) => {
// 渲染至页面,可通过 message.tid 做唯一标识
}
};
jim.sendMessage(msg, callbacks).then((message) => {
console.log(message);
}, (result) => {
let { error, tid } = result;
// 可根据 tid 修改消息发送失败的状态, Web 端消息失败仅在 SDK 内存中保存,刷新后将无法获取到发送失败的消息
console.log(tid, error);
});