sendMessage
功能介绍
说明
发送消息。
注意
需要先调用createXXXMessage创建一条消息,createXXXMessageByURL创建的消息需要通过sendMessageNotOss发送。
相关回调:
onNewConversation
onConversationChanged
onRecvNewMessage
onRecvNewMessages
- iOS
- Android
- Flutter
- uni-app
- Browser/Electron/MiniProgram
- React-Native
- Unity
函数原型
Future<Message> sendMessage({
required Message message,
required OfflinePushInfo offlinePushInfo,
String? userID,
String? groupID,
String? operationID,
})
输入参数
参数名称 | 参数类型 | 是否必填 | 描述 |
---|---|---|---|
message | Message | 是 | 消息体 |
userID | String | 否 | 接收消息的 user ID |
groupID | String | 否 | 接收消息的 group ID |
offlinePushInfo | OfflinePushInfo | 否 | 离线消息体 |
返回结果
名称 | 类型 | 描述 |
---|---|---|
~ | Message | 成功返回 |
代码示例
Message msg = await OpenIM.iMManager.messageManager.sendMessage(message: message, offlinePushInfo: offlinePushInfo);
// todo
函数原型
- (void)sendMessage:(OIMMessageInfo *)message
recvID:(NSString * _Nullable)recvID
groupID:(NSString * _Nullable)groupID
offlinePushInfo:(OIMOfflinePushInfo * _Nullable)offlinePushInfo
onSuccess:(nullable OIMMessageInfoCallback)onSuccess
onProgress:(nullable OIMNumberCallback)onProgress
onFailure:(nullable OIMFailureCallback)onFailure;
输入参数
参数名称 | 参数类型 | 是否必填 | 描述 |
---|---|---|---|
message | OIMMessageInfo | 是 | 消息体 |
recvID | NSSting | 否 | 接收消息的 user ID |
groupID | NSSting | 否 | 接收消息的 group ID |
offlinePushInfo | OIMOfflinePushInfo | 否 | 离线消息体 |
返回结果
名称 | 类型 | 描述 |
---|---|---|
onSuccess | OIMMessageInfo | 成功返回 |
onProgress | NSInteger | 发送进度 |
onFailure | OIMFailureCallback | 失败返回 |
代码示例
OIMMessageInfo *testMessage = [OIMMessageInfo createTextMessage:@"test"];
[OIMManager.manager sendMessage:testMessage
recvID:@""
groupID:@""
offlinePushInfo:nil
onSuccess:^(OIMMessageInfo * _Nullable message) {
} onProgress:^(NSInteger number) {
} onFailure:^(NSInteger code, NSString * _Nullable msg) {
}];
函数原型
public void sendMessage(OnMsgSendCallback base, Message message, String recvUid, String recvGid, OfflinePushInfo offlinePushInfo)
输入参数
参数名称 | 参数类型 | 是否必填 | 描述 |
---|---|---|---|
base | OnMsgSendCallback | 是 | callback |
message | Message | 是 | 消息体 |
userID | String | 否 | 接收消息的 user ID |
groupID | String | 否 | 接收消息的 group ID |
offlinePushInfo | OfflinePushInfo | 否 | 离线消息体 |
返回结果
名称 | 类型 | 描述 |
---|---|---|
~ | Message | 成功返回 |
代码示例
OpenIMClient.getInstance().messageManager.sendMessage( new OnMsgSendCallback(){
public void onError(int code, String error) {
//发送失败
}
public void onProgress(long progress) {
//发送进度
}
public void onSuccess(Message s) {
//发送成功
}
}, message, recvUid, recvGid, offlinePushInfo);
函数原型
IMSDK.sendMessage({
recvID: string;
groupID: string;
offlinePushInfo?: OfflinePush;
message: MessageItem;
}, operationID?: string): Promise<WsResponse<MessageItem>>
输入参数
参数名称 | 参数类型 | 是否必填 | 描述 |
---|---|---|---|
message | MessageItem | 是 | 消息体 |
recvID | string | 是 | 接收消息的 user ID,发送群消息时传空字符串 |
groupID | string | 是 | 接收消息的 group ID,发送单聊消息时传空字符串 |
offlinePushInfo | OfflinePushInfo | 否 | 离线消息体 |
返回结果
参数名称 | 参数类型 | 描述 |
---|---|---|
Promise.then() | Promise<WsResponse<MessageItem>> | 调用成功回调 |
Promise.catch() | Promise<WsResponse> | 调用失败回调 |
代码示例
import { getSDK } from '@openim/wasm-client-sdk';
const IMSDK = getSDK();
// use in electron with ffi
// import { getWithRenderProcess } from '@openim/electron-client-sdk/lib/render';
// const { instance: IMSDK } = getWithRenderProcess();
// use in mini program
// import { OpenIMSDK } from 'open-im-sdk';
// const IMSDK = new OpenIMSDK();
IMSDK.sendMessage({
recvID: "userID",
groupID: "",
message: {
// MessageItem
...
}
})
.then(({ data }) => {
// 调用成功
})
.catch(({ errCode, errMsg }) => {
// 调用失败
});
函数原型
IMSDK.asyncApi('sendMessage', operationID: string, {
recvID: string;
groupID: string;
offlinePushInfo?: OfflinePush;
message: MessageItem;
}): Promise<void>
输入参数
参数名称 | 参数类型 | 是否必填 | 描述 |
---|---|---|---|
operationID | string | 是 | 操作 ID,用于定位问题,保持唯一,建议用当前时间和随机数 |
message | MessageItem | 是 | 消息体 |
recvID | string | 是 | 接收消息的 user ID,发送群消息时传空字符串 |
groupID | string | 是 | 接收消息的 group ID,发送单聊消息时传空字符串 |
offlinePushInfo | OfflinePushInfo | 是 | 离线消息体 |
返回结果
通过
openim-uniapp-polyfill
包将函数 Promise 化,调用时需要使用then
和catch
判断并处理成功和失败回调。
参数名称 | 参数类型 | 描述 |
---|---|---|
Promise.then() | Promise<void> | 调用成功回调 |
Promise.catch() | Promise<CatchResponse> | 调用失败回调 |
代码示例
import IMSDK from 'openim-uniapp-polyfill';
IMSDK.asyncApi('sendMessage', IMSDK.uuid(), {
recvID: "userID",
groupID: "",
message: {
// MessageItem
...
},
offlinePushInfo: {
title: 'you have a new message',
desc: 'new message',
ex: '',
iOSPushSound: '+1',
iOSBadgeCount: true,
}
})
.then((data) => {
// 调用成功
})
.catch(({ errCode, errMsg }) => {
// 调用失败
});
函数原型
OpenIMSDKRN.sendMessage({
recvID: string,
groupID: string,
offlinePushInfo?: OfflinePush,
message: MessageItem,
}, operationID: string): Promise<void>
输入参数
参数名称 | 参数类型 | 是否必填 | 描述 |
---|---|---|---|
message | MessageItem | 是 | 消息体 |
recvID | string | 是 | 接收消息的 user ID,发送群消息时传空字符串 |
groupID | string | 是 | 接收消息的 group ID,发送单聊消息时传空字符串 |
offlinePushInfo | OfflinePushInfo | 是 | 离线消息体 |
operationID | string | 是 | 操作 ID,用于定位问题,保持唯一,建议用当前时间和随机数 |
返回结果
参数名称 | 参数类型 | 描述 |
---|---|---|
Promise.then() | Promise<void> | 调用成功回调 |
Promise.catch() | Promise<CatchResponse> | 调用失败回调 |
代码示例
import OpenIMSDKRN from "open-im-sdk-rn";
OpenIMSDKRN.sendMessage({
recvID: "userID",
groupID: "",
message: {
// MessageItem
...
},
offlinePushInfo: {
title: 'you have a new message',
desc: 'new message',
ex: '',
iOSPushSound: '+1',
iOSBadgeCount: true,
}
}, 'operationID')
.then((data) => {
// 调用成功
})
.catch(({ errCode, errMsg }) => {
// 调用失败
});
函数原型
public static void SendMessage(IMsgSendCallBack cb, Message message, string recvId, string groupId, OfflinePushInfo offlinePushInfo,bool isOnlineOnly)
输入参数
参数名称 | 参数类型 | 是否必填 | 描述 |
---|---|---|---|
cb | IMsgSendCallBack | 是 | callback |
message | Message | 是 | 消息体 |
userId | string | 否 | 接收消息的 user ID |
groupId | string | 否 | 接收消息的 group ID |
offlinePushInfo | OfflinePushInfo | 否 | 离线消息体 |
isOnlineOnly | bool | 是 | 接收者在线才能收到,否则将会丢失 |
返回结果
代码示例
var callback = new MsgSendCallBack() // 实现IMsgSendCallBack接口
IMSDK.SendMessage(callback,msg ,recvId,groupId,new OfflinePushInfo(){},false);