- Android
- iOS
- JavaScript
- Flutter
- ReactNative
Parameters
| Name | Type | Description | Version |
|---|---|---|---|
| content | MessageContent | Message content | 1.0.0 |
| conversation | Conversation | Conversation identifier | 1.0.0 |
| callback | ISendMessageCallback | Callback | 1.0.0 |
Code Example
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());
Parameters
| Name | Type | Description | Version |
|---|---|---|---|
| content | JMessageContent | Message content | 1.0.0 |
| conversation | JConversation | Conversation identifier | 1.0.0 |
| successBlock | Success callback | 1.0.0 | |
| errorBlock | Failure callback | 1.0.0 |
Code Example
//text message
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);
Parameters
| Name | Type | Required | Default | Description | Version |
|---|---|---|---|---|---|
| message | Object | Yes | Message object | 1.0.0 | |
| message.conversationType | Number | Yes | Conversation type | 1.0.0 | |
| message.conversationId | String | Yes | Conversation ID. For PRIVATE conversations, it is the recipient userId; for GROUP conversations, it is the group ID. | 1.0.0 | |
| message.name | String | Yes | Message name. Use it to send different message types as needed; see [MessageType] for enum details.(../../../enum/web#message) | 1.0.0 | |
| message.content | Object | Yes | Message content used to construct the message.name message | 1.0.0 | |
| message.referMsg | Object | No | None | Referenced reply message. The parameter must be a complete Message. | 1.0.0 |
| message.mentionInfo | Object | No | None | Applies when conversationType is GROUP. Setting mentionInfo marks this message as a mention message. | 1.0.0 |
| mentionInfo.mentionType | Number | No | None | Mention type. See Mention Message Enums for details. | 1.0.0 |
| mentionInfo.members | Array | No | None | List of specified members. The SDK prioritizes Mention Message Enums when determining the mention type. | 1.0.0 |
| lifeTime | Number | No | 0 | Message destruction duration. It must be greater than 0, in ms; for example, 60 seconds is 1 * 60 * 1000. | 1.9.0 |
| lifeTimeAfterRead | Number | No | 0 | Read-once message duration. It must be greater than 0, in ms; for example, 60 seconds is 1 * 60 * 1000. | 1.9.0 |
callbacks Parameters
| Name | Type | Required | Default | Description | Version |
|---|---|---|---|---|---|
| callbacks | Object | No | Callback object | 1.0.0 | |
| callbacks.onbefore | Function | No | Pre-send callback. When invoked, it returns the temporary message identifier tid, which can be used to render the message. After a successful send, the backend updates the message state by tid. | 1.0.0 |
Success Callback
| Name | Type | Description | Version |
|---|---|---|---|
| message | Object | After sending succeeds, returns a message object with messageId and sentTime. See Message for the message structure. | 1.0.0 |
IM Server supports intercepting and replacing messages during sending. For example, it can replace an image message with a text message; sender and recipient behavior is as follows:
Recipient: sees the replacement
text message.
Sender: the replacement message is returned in the successful message callback.
message.nameandmessage.contentare replaced with the new content, whilemessageIdandsentTimeare handled unchanged.
Failure Callback
| Name | Type | Description | Version |
|---|---|---|---|
| result | Object | When sending fails, returns an object containing tid and error. Check error.msg directly or see [status codes].(../../../status_code/web) | 1.0.0 |
Code Example
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) => {
// render on the page and use message.tid as the unique identifier
}
};
jim.sendMessage(msg, callbacks).then((message) => {
console.log(message);
}, (result) => {
let { error, tid } = result;
// Use tid to update the failed-message state. On Web, failed messages are stored only in SDK memory and are unavailable after a refresh
console.log(tid, error);
});
Because sending is asynchronous, calling sendMessage synchronously returns a message object, which can be displayed in the UI immediately. Use message.clientMsgNo as the unique identifier and update message state by clientMsgNo after callback is triggered.
Parameters
| Name | Type | Description | Version |
|---|---|---|---|
| content | MessageContent | Message content | 1.0.0 |
| conversation | Conversation | Conversation identifier | 1.0.0 |
| callback | SendMessageCallback | Callback | 1.0.0 |
Code Example
import JuggleIM from 'juggleim-rnsdk';
const conversation = {
type: 1, // 1: private chat, 2: group chat
id: 'userId1'
};
const textMessage = {
contentType: 'jg:text',
content: 'Text message'
};
const callback = (message: any, errorCode: number) => {
if (errorCode === 0) {
console.log('sendMessage success, messageId is ' + message.messageId);
} else {
console.log('sendMessage error, errorCode is ' + errorCode.toString() + ', clientMsgNo is ' + message.clientMsgNo.toString());
}
};
JuggleIM.sendMessage({
conversation: conversation,
content: textMessage
}, callback).then((message) => {
console.log('after send, clientMsgNo is ' + message.clientMsgNo);
});
Because sending is asynchronous, calling sendMessage synchronously returns a message object, which can be displayed in the UI immediately. Use message.clientMsgNo as the unique identifier and update message state by clientMsgNo after callback is triggered.
Parameters
| Name | Type | Description | Version |
|---|---|---|---|
| content | MessageContent | Message content | 0.6.3 |
| conversation | Conversation | Conversation identifier | 0.6.3 |
| callback | DataCallback | Callback | 0.6.3 |
Code Example
Conversation conversation = Conversation(ConversationType.group, 'groupId1');
TextMessage textMessage = TextMessage.content('Text message');
DataCallback<Message> callback = (m, errorCode) {
if (errorCode == 0) {
print("sendMessage success, messageId is " + m.messageId);
} else {
print('sendMessage error, errorCode is ' + errorCode.toString() + ', clientMsgNo is ' + m.clientMsgNo!.toString());
}
};
Message message = await JuggleIm.instance.sendMessage(textMessage, conversation, callback);