更新时间: 2020-09-07
# 发送普通消息
undefined
4.0.1 版本之后 SDK 新增发送消息传参为 message 的接口,并增加是否发送推送的配置
4.0.4 版本开始支持单条消息推送配置功能
RCMessagePushConfig 详细说明请查看 配置消息推送
# 文本消息
消息类名 | ObjectName | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 |
---|---|---|---|---|---|---|
TextMessage | RC:TxtMsg | 存储 | 计数 | 存储 | 推送 | 消息内容 |
示例代码
TextMessage txtMessage = new TextMessage(); txtMessage.content = "这条消息来自 Flutter"; Message msg = await RongIMClient.sendMessage(RCConversationType.Private, privateUserId, txtMessage); print("send message start senderUserId = "+msg.senderUserId);
已复制
2
3
4
常见问题
API 参考
# Emoji 消息
Flutter 端发送 Emoji 消息,开发者直接使用 文本消息 发送即可。如有特殊需求需要开发者自己 自定义消息 实现。
# 位置消息
消息说明
消息类名 | 父类名称 | ObjectName | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 |
---|---|---|---|---|---|---|---|
LocationMessage | MessageContent | RC:LBSMsg | 存储 | 计数 | 存储 | 推送 | [位置] |
说明:由于暂无合适的 Flutter 地图 SDK,所以 Flutter 只实现了位置消息,并没有实现其 UI 展示
# 正在输入状态消息
Flutter 暂不支持该消息
# 发送媒体消息
# 正在输入状态消息
Flutter 暂不支持该消息
4.0.1 版本之后 SDK 新增发送消息传参为 message 的接口,并增加是否发送推送的配置
4.0.4 版本开始支持单条消息推送配置功能
RCMessagePushConfig 详细说明请查看 配置消息推送
# 发送图片消息
消息类名 | ObjectName | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 |
---|---|---|---|---|---|---|
ImageMessage | RC:ImgMsg | 存储 | 计数 | 存储 | 推送 | 消息内容 |
示例代码
ImageMessage imgMessage = new ImageMessage(); imgMessage.localPath = "image/local/path.jpg"; Message msg = await RongIMClient.sendMessage(RCConversationType.Private, privateUserId, imgMessage); print("send image message start senderUserId = "+msg.senderUserId);
已复制
2
3
4
5
# 发送语音消息
消息类名 | ObjectName | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 |
---|---|---|---|---|---|---|
VoiceMessage | RC:HQVCMsg | 存储 | 计数 | 存储 | 推送 | 消息内容 |
说明:Flutter 只支持高清语音消息;因为没有合适的支持 wav 格式的 Flutter 库,所以不支持普通语音消息
示例代码
VoiceMessage msg = VoiceMessage.obtain(path, duration); Message message = await RongIMClient.sendMessage(conversationType, targetId, msg);
已复制
2
3
# 发送文件消息
消息类名 | ObjectName | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 |
---|---|---|---|---|---|---|
FileMessage | RC:FileMsg | 存储 | 计数 | 存储 | 推送 | 消息内容 |
示例代码
FileMessage fileMessage = FileMessage.obtain(localPaht); // 文件后缀如 "png" "txt" fileMessage.mType = "XXX"; Message msg = await RongIMClient.sendMessage( conversationType, targetId, fileMessage);
已复制
2
3
4
5
6
# 发送小视频消息
消息类名 | ObjectName | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 |
---|---|---|---|---|---|---|
SightMessage | RC:SightMsg | 存储 | 计数 | 存储 | 推送 | 消息内容 |
示例代码
SightMessage sightMessage = SightMessage.obtain(videoPath, recodeTime); RongIMClient.sendMessage(conversationType, targetId, sightMessage);
已复制
2
# 发送动态表情消息
Flutter 暂不支持该消息
# 发送自定义消息
Flutter SDK 是基于原生 iOS/Android SDK 开发的,所有的消息都是在 iOS/Android SDK 进行收发与编解码
的
# 自定义消息流程
如果需要自定义消息,需要按照下面的流程处理
1.编写 iOS/Android 层面的自定义消息 2.使用 iOS/Android 原生 SDK 注册自定义消息 3.Flutter 编写对应的自定义消息 4.Flutter 发送自定义消息
已复制
2
3
4
上面第四步需要保证自定义消息在原生平台能够正常编解码,建议调试时候 debug 看一下 iOS 自定义消息的 encode 和 decodeWithData 方法、Android 自定义消息的 构造方法和 encode 方法
,保证自定义消息能够被 iOS/Android 正常的编解码
由于 Flutter 目前不支持反射,所以自定义的消息无法被正常解码,自定义消息的数据会被放在 Flutter Message 和 Conversation 对象的 originContentMap 中
iOS 自定义消息实现文档 (opens new window)
Android 自定义消息文档 (opens new window)
# 自定义消息
需要继承 MessageContent
,具体可以参考下面的 Flutter 自定义消息示例
需要解释以下几个方法
void decode(String jsonStr) { // 该方法把 json 转换成消息对象 } String encode() { // 该方法把 消息对象 转换成 json return null; } String conversationDigest() { // 该方法返回消息摘要,方便会话列表展示消息内容 return null; } String getObjectName() { // 该方法返回消息 objName,保证消息类型的唯一 return null; }
已复制
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
另外已经提供了自定义消息的范例,可查看源码实现与使用
iOS 自定义消息:RCDTestMessage.h (opens new window)
Android 自定义消息:TestMessage.java (opens new window)
Flutter 自定义消息:test_message.dart (opens new window)