sendMessage
功能介绍
发送消息
- 发送消息方法在核心类
TencentImSDKPlugin.
v2TIMManager
.
getMessageManager
()
中。 V2TimMessage
中可以携带不同类型子类,表示不同类型的消息。- 发送消息首先通过createXXXMessage创建不同种类的信息,再通过sendMessage根据消息id发送。
消息类型如下:
createTextMessage:文本消息
createCustomMessage:自定义消息
createImageMessage:图片消息
createSoundMessage:音频消息
createVideoMessage:视频消息
createFileMessage:文件消息
createLocationMessage:位置消息
createFaceMessage:表情消息
createForwardMessage:创建转发消息
createMergerMessage:创建合并消息
createTargetedGroupMessage:定向群消息
参数详解
参数 | 参数类型 | 是否必填 | 含义 | 单聊有效 | 群聊有效 | 说明 |
---|---|---|---|---|---|---|
id | String | 是 | 创建消息返回的id | YES | YES | 需要通过对应的 createXxxMessage 接口先行创建 |
receiver | String | 是 | 单聊消息接收者 userID | YES | NO | 如果是发送 C2C 单聊消息,只需要指定 receiver 即可 |
groupID | String | 是 | 群聊 groupID | NO | YES | 如果是发送群聊消息,只需要指定 groupID 即可 |
priority | MessagePriorityEnum | 否 | 消息优先级 | NO | YES | 请把重要消息设置为高优先级(例如红包、礼物消息),高频且不重要的消息设置为低优先级(例如点赞消息) |
onlineUserOnly | bool | 否 | 是否只有在线用户才能收到 | YES | YES | 如果设置为 YES ,接收方历史消息拉取不到,常被用于实现”对方正在输入”或群组里的非重要提示等弱提示功能 |
offlinePushInfo | OfflinePushInfo | 否 | 离线推送信息 | YES | YES | 离线推送时携带的标题和内容 |
needReadReceipt | bool | 否 | 发送群消息是否支持已读 | NO | YES | 发送群消息是否支持已读 |
isExcludedFromUnreadCount | bool | 否 | 发送消息是否计入会话未读数 | YES | YES | 如果设置为 true,发送消息不会计入会话未读,默认为 false |
isExcludedFromLastMessage | bool | 否 | 发送消息是否计入会话 lastMessage | YES | YES | 如果设置为 true,发送消息不会计入会话 lastMessage,默认为 false |
cloudCustomData | String | 否 | 消息云端数据 | YES | YES | 消息附带的额外的数据,存云端,消息的接受者可以访问到 |
localCustomData | String | 否 | 消息本地数据 | YES | YES | 消息附带的额外的数据,存本地,消息的接受者不可以访问到,App 卸载后数据丢失 |
返回值
V2TimValueCallback<V2TimMessage>
{
code : int
desc : String
data : {
cloudCustomData : String
customElem : V2TimCustomElem
elemType : int
faceElem : V2TimFaceElem
faceUrl : String
fileElem : V2TimFileElem
friendRemark : String
groupAtUserList : List<String>
groupID : String
groupTipsElem : V2TimGroupTipsElem
id : String
imageElem : V2TimImageElem
isExcludedFromLastMessage : bool
isExcludedFromUnreadCount : bool
isPeerRead : bool
isRead : bool
isSelf : bool
localCustomData : String
localCustomInt : int
locationElem : V2TimLocationElem
mergerElem : V2TimMergerElem
messageFromWeb : String
msgID : String
nameCard : String
needReadReceipt : bool
nickName : String
offlinePushInfo : V2TimOfflinePushInfo
priority : int
progress : int
random : int
sender : String
seq : String
soundElem : V2TimSoundElem
status : int
textElem : V2TimTextElem
timestamp : int
userID : String
videoElem : V2TimVideoElem
}
}
返回值详解
名称 | 数值类型 | 描述 |
---|---|---|
code | int | 请求结果错误码 |
desc | String | 请求结果描述 |
data | V2TimMessage | 发送的信息 |
代码示例
// 创建文本消息
V2TimValueCallback<V2TimMsgCreateInfoResult> createTextMessageRes =
await TencentImSDKPlugin.v2TIMManager
.getMessageManager()
.createTextMessage(
text: "test", // 文本信息
);
if (createTextMessageRes.code == 0) {
// 文本信息创建成功
String? id = createTextMessageRes.data?.id;
// 发送文本消息
// 在sendMessage时,若只填写receiver则发个人用户单聊消息
// 若只填写groupID则发群组消息
// 若填写了receiver与groupID则发群内的个人用户,消息在群聊中显示,只有指定receiver能看见
V2TimValueCallback<V2TimMessage> sendMessageRes =
await TencentImSDKPlugin.v2TIMManager.getMessageManager().sendMessage(
id: id!, // 创建的messageid
receiver: "userID", // 接收人id
groupID: "groupID", // 接收群组id
priority: MessagePriorityEnum.V2TIM_PRIORITY_DEFAULT, // 消息优先级
onlineUserOnly:
false, // 是否只有在线用户才能收到,如果设置为 true ,接收方历史消息拉取不到,常被用于实现“对方正在输入”或群组里的非重要提示等弱提示功能,该字段不支持 AVChatRoom。
isExcludedFromUnreadCount: false, // 发送消息是否计入会话未读数
isExcludedFromLastMessage: false, // 发送消息是否计入会话 lastMessage
needReadReceipt:
false, // 消息是否需要已读回执(只有 Group 消息有效,6.1 及以上版本支持,需要您购买旗舰版套餐)
offlinePushInfo: OfflinePushInfo(), // 离线推送时携带的标题和内容
cloudCustomData: "", // 消息云端数据,消息附带的额外的数据,存云端,消息的接受者可以访问到
localCustomData:
"" // 消息本地数据,消息附带的额外的数据,存本地,消息的接受者不可以访问到,App 卸载后数据丢失
);
if (sendMessageRes.code == 0) {
// 发送成功
}
}