全部文档

更新时间: 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);
已复制
1
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);

已复制
1
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);
已复制
1
2
3
# 发送文件消息
消息类名 ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
FileMessage RC:FileMsg 存储 计数 存储 推送 消息内容

示例代码

    FileMessage fileMessage = FileMessage.obtain(localPaht);
    // 文件后缀如 "png" "txt"
    fileMessage.mType = "XXX";
    Message msg = await RongIMClient.sendMessage(
              conversationType, targetId, fileMessage);

已复制
1
2
3
4
5
6
# 发送小视频消息
消息类名 ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
SightMessage RC:SightMsg 存储 计数 存储 推送 消息内容

示例代码

SightMessage sightMessage = SightMessage.obtain(videoPath, recodeTime);
RongIMClient.sendMessage(conversationType, targetId, sightMessage);
已复制
1
2
# 发送动态表情消息

Flutter 暂不支持该消息

# 发送自定义消息

Flutter SDK 是基于原生 iOS/Android SDK 开发的,所有的消息都是在 iOS/Android SDK 进行收发与编解码

# 自定义消息流程

如果需要自定义消息,需要按照下面的流程处理

1.编写 iOS/Android 层面的自定义消息
2.使用 iOS/Android 原生 SDK 注册自定义消息
3.Flutter 编写对应的自定义消息
4.Flutter 发送自定义消息
已复制
1
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;
  }
已复制
1
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)

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助