消息发送
功能描述
| 消息属性 | 消息描述 | 消息属性 | 消息描述 | 
|---|---|---|---|
| 消息类名 | 各端消息名 | ObjectName | 传输层名称,与消息类名一一对应 | 
| 存储属性 | 存储 / 不存储 | 计数属性 | 计数 / 不计数 | 
| 离线属性 | 缓存 / 不缓存 | 消息尺寸 | 128 KB | 
| 推送属性 | 是/否 | 推送内容 | 详见各消息类送方式 | 
存储属性
| 存储属性 | 存储分类 | 支持平台 | 详细描述 | 
|---|---|---|---|
| 存储 | 客户端 | Android、iOS | 发送、接收该消息后,本地数据库存储  Web 端 和 小程序端因本地存储不可靠,不支持客户端消息存储,但可通过历史消息云存储服务获取历史记录  | 
| 存储 | 云端 | Android、iOS、Web | 默认不在云端进行存储,需开通历史消息云存储服务,开通后,可在融云服务端存储 6 个月的历史消息,供客户端按需拉取 | 
| 不存储 | 客户端 | Android、iOS | 发送、接收该消息后,本地数据库不存储 | 
| 不存储 | 云端 | Android、iOS、Web | 无论是否开通历史消息云存储服务,该消息均不存储 | 
计数属性
接收收到消息时,会话是否累计未读数。
| 计数属性 | 支持平台 | 详细描述 | 
|---|---|---|
| 计数 | iOS、Android、Web | 会话未读消息数 + 1,该属性只影响会话列表未读数计数,App 应用角标可根据每个会话列表未读数累加获得 | 
| 不计数 | iOS、Android、Web | 会话未读消息数不变 | 
离线属性
接收人当前不在线时,是否进行离线缓存。
| 离线属性 | 详细描述 | 
|---|---|
| 存储 | 消息进行离线缓存,默认 7 天。接收人在 7 天内上线,均可接收到该消息。超过 7 天后,消息被离线缓存淘汰。如有需要,可通过云端存储拉取到该消息 | 
| 不存储 | 消息不进行离线缓存,所以只有接收人在线时,才可收到该消息。该消息不进行历史消息云存储、不进入云端存储( Log 日志 )、不进行消息同步( 消息路由 ) | 
推送属性
接收人是否接收推送,当离线属性为 存储 时,该属性生效。离线属性为 不存储 时属性无效。
由于 Web、小程序、PC 端没有推送平台,无法收到推送提醒。
| 推送属性 | 平台 | 推送方式 | 详细描述 | 
|---|---|---|---|
| 推送 | iOS、Android | APNS、华为、小米、魅族、OPPO、vivo、FCM、融云 | 当有离线缓存消息时,进行远程推送提醒,内容为该推送提醒显示的内容 | 
| 不推送 | iOS、Android | -- | 当有离线缓存消息时,不进行远程推送提醒 | 
危险
- 发送消息必须在成功连接融云服务器成功之后进行。
 - 每秒最多发送 5 条消息。
 
发送普通消息
API 参考:sendMessage
参数需按顺序传入,顺序为参数说明中的字段顺序。
sendMessage 参数说明
| 参数 | 类型 | 必填 | 说明 | 最低版本 | 
|---|---|---|---|---|
| conversationType | Number | 是 | 会话类型,单聊会话传入 RongIMLib.ConversationType.PRIVATE | 2.2.0 | 
| targetId | String | 是 | 单聊会话 ID | 2.2.0 | 
| msg | Object | 是 | 消息 | 2.2.0 | 
| callback | Object | 是 | 回调对象 | 2.2.0 | 
| callback.onSuccess | Function | 是 | 成功回调 | 2.2.0 | 
| callback.onError | Function | 是 | 失败回调 | 2.2.0 | 
| isMentioned | Boolean | 否 | 是否为 @ 消息 | 2.2.0 | 
| pushContent | String | 否 | Push 显示内容 | 2.2.0 | 
| pushData | String | 否 | Push 通知时附加信息 | 2.2.0 | 
| Number | 否 | 该参数已废弃 | 2.6.0 | |
| config | Object | 否 | 其他设置项 | 2.5.3 | 
config 说明:
| 参数 | 类型 | 必填 | 说明 | 最低版本 | 
|---|---|---|---|---|
| userIds | Array | 否 | 接收定向消息的用户 id | 2.2.0 | 
| isVoipPush | Boolean | 否 | 为 true 时, 对端不在线的 iOS 会收到 Voip Push. Android 无影响 | 2.5.3 | 
| disableNotification | Boolean | 否 | 是否发送静默消息,设置为 true 后不会发送 Push 信息和本地通知提醒 | 2.5.9 | 
| canIncludeExpansion | Boolean | 否 | 是否支持扩展 | 2.6.0 | 
| expansion | Object | 否 | 扩展内容 | 2.6.0 | 
| isStatusMessage | Boolean | 否 | 是否为状态消息 | 2.6.0 | 
| Boolean | 否 | 该参数已废弃,请使用 isStatusMessage 替代该参数。在 isStatusMessage 有值的情况下,该参数将失效 | 2.6.0 | 
代码示例
JavaScript
var conversationType = RongIMLib.ConversationType.PRIVATE;  // 群聊, 其他会话选择相应的消息类型即可
var targetId = '接收方的 userId';  // 目标 Id
var msg = new RongIMLib.TextMessage({ content: 'hello RongCloud!', extra: '附加信息'});
  var callBack = {
    onSuccess: function (message) {
      // message 为发送的消息对象并且包含服务器返回的消息唯一 id 和发送消息时间戳
      console.log('发送文本消息成功', message);
    },
    onError: function (errorCode) {
      console.log('发送文本消  息失败', errorCode);
    }
  };
var isMentioned = false;  // @ 消息
var pushContent = 'user 发送了一条消息';  // Push 显示内容
var methodType = null; // 已经逐步废弃,填写null即可
var pushData = null;  // Push 通知时附加信息, 可不填
var config = {
  isVoipPush: true, // 发送 voip push
  disableNotification: true // 发送静默消息, 设置为 true 后移动端不会收到 Push 信息和本地通知提醒
};
RongIMClient.getInstance().sendMessage(conversationType, targetId, msg, callBack, isMentioned, pushContent, pushData, methodType, config);
message 属性说明
| 字段名 | 类型 | 说明 | 
|---|---|---|
| conversationType | Number | 会话类型,单聊会话传入 RongIMLib.ConversationType.PRIVATE | 
| targetId | String | 单聊会话 ID | 
| senderUserId | String | 发送者 id | 
| content | Object | 消息内容 | 
| objectName | String | 消息的消息标识,融云内置消息以 "RC:" 开头 | 
| messageType | String | 消息类型 | 
| messageId | Number | 本地生成的消息 id | 
| messageUId | String | 服务端存储的消息 id | 
| messageDirection | Number | 消息方向, 发送: 1, 接收: 2, 枚举值通过 RongIMLib.MessageDirection 获取 | 
| offLineMessage | Boolean | 是否为离线消息 | 
| sentStatus | Number | 发送状态, 枚举值通过 RongIMLib.SentStatus 获取, PC 端有效,Web 端无效 | 
| sentTime | Number | 消息在融云服务端的发送时间 | 
| receivedStatus | Number | 接收状态, 枚举值通过RongIMLib.ReceivedStatus 获取 | 
| receivedTime | Number | 接收时间 | 
| disableNotification | Boolean | 消息是否静默,静默消息不会发送 Push 信息和本地通知提醒 | 
文本消息
API 参考:sendMessage
消息说明
| 消息类名 | ObjectName | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 | 
|---|---|---|---|---|---|---|
| TextMessage | RC:TxtMsg | 存储 | 计数 | 存储 | 推送 | 消息内容 | 
TextMessage 参数说明
| 属性名称 | 属性类型 | 是否必填 | 属性说明 | 
|---|---|---|---|
| content | String | 是 | 文本消息内容 | 
| extra | String | 否 | 附加信息,一般为消息不显示消息内容 | 
代码示例
JavaScript
var textMessageInfo = {
  content: 'hello RongCloud!',
  extra: '附加信息'
}
var msg = new RongIMLib.TextMessage(textMessageInfo);
var conversationType = RongIMLib.ConversationType.PRIVATE;
var targetId = '单聊会话 ID';  // 目标 ID
RongIMClient.getInstance().sendMessage(conversationType, targetId, msg, {
  onSuccess: function (message) {
    // message 为发送的消息对象并且包含服务器返回的消息唯一 id 和发送消息时间戳
    console.log('发送文本消息成功', message);
  },
  onError: function (errorCode) {
    console.log('发送文本消息失败', errorCode);
  }
});
图文消息
API 参考:sendMessage
消息说明
| 消息类名 | ObjectName | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 | 
|---|---|---|---|---|---|---|
| RichContentMessage | RC:ImgTextMsg | 存储 | 计数 | 存储 | 推送 | 消息内容 | 
参数说明
| 属性名称 | 属性类型 | 是否必填 | 属性说明 | 
|---|---|---|---|
| content | String | 是 | 图文内容 | 
| title | String | 是 | 图文标题 | 
| imageUri | String | 是 | 图片上传到服务器的 url | 
| url | String | 是 | 图文消息点击后打开的 URL | 
| extra | String | 否 | 附加信息,一般为消息不显示消息内容 | 
代码示例
JavaScript
var msg = new RongIMLib.RichContentMessage({
  title: '图文标题',
  content: '图文内容',
  imageUri: '图片上传到服务器的 url',
  url: '图文消息点击后打开的 URL'
});
var conversationType = RongIMLib.ConversationType.PRIVATE;
var targetId = '单聊会话 ID';
RongIMClient.getInstance().sendMessage(conversationType, targetId, msg, {
  onSuccess: function (message) {
    console.log('发送图文消息成功', message);
  },
  onError: function (errorCode) {
    console.log('发送图文消息失败', errorCode);
  }
});
Emoji 消息
- web 端发送 Emoji 消息,开发者直接使用文本消息发送即可。
 - 融云提供 Emoji 插件,内置了 128 个 Emoji 表情的图片, 做消息输入框的表情选项, 也可自行扩展配置。
 - 发消息时, 必须直接发送 Emoji 原生字符. 如:😀 , 转换方法:
symbolToEmoji。 - Web SDK 接收消息时接收到的是 Unicode 编码格式, 如:”ef600” 需要转化才能正确显示原生 Emoji。
 
API 参考:sendMessage
代码示例
JavaScript
var textMessageInfo = { content: '😀' }
var msg = new RongIMLib.TextMessage(textMessageInfo);
var conversationType = RongIMLib.ConversationType.PRIVATE;
var targetId = '单聊会话 ID';  // 目标 ID
RongIMClient.getInstance().sendMessage(conversationType, targetId, msg, {
  onSuccess: function (message) {
    // message 为发送的消息对象并且包含服务器返回的消息唯一 id 和发送消息时间戳
    console.log('发送 Emoji 消息成功', message);
  },
  onError: function (errorCode) {
    console.log('发送 Emoji 消息失败', errorCode);
  }
});
Emoji 插件
插件兼容性
| Chrome | Firefox | Safari | IE | Edge | iPhone | Android | 
|---|---|---|---|---|---|---|
| 30+ | 30+ | 10+ | 7+ | ✔️ | iOS 8.0+ 的Safari浏览器以及微信浏览器 | 4.4+系统的Chrome浏览器以及微信浏览器 | 
Emoji 插件引入
html
<!-- HTTP -->
<script src="http://cdn.ronghub.com/RongEmoji-2.2.11.js"></script>
<!-- HTTPS -->
<script src="https://cdn.ronghub.com/RongEmoji-2.2.11.js"></script>
<!-- 压缩版 -->
<script src="https://cdn.ronghub.com/RongEmoji-2.2.11.min.js"></script>
Emoji 代码示例 : https://rongcloud.github.io/web-emoji-demo/src/index.html
危险
- 使用 
import * as RongIMLib from '@rongcloud/imlib-v2-adapter'方式引入 SDK 时表情插件调用需要使用window前缀。例如:window.RongIMLib.RongIMEmoji.init() - RongEmoji 插件仅支持 cdn 引入方式,暂不支持 npm 引入
 
Emoji 初始化:默认参数初始化
JavaScript
RongIMLib.RongIMEmoji.init();
Emoji 初始化:自定义表情配置初始化
config 参数说明:
| 参数 | 类型 | 必填 | 说明 | 最低版本 | 
|---|---|---|---|---|
| size | Number | 否 | 表情大小, 默认 24, 建议 18 - 58 | 2.2.6 | 
| url | String | 否 | Emoji 背景图片 url | 2.2.6 | 
| lang | String | 否 | Emoji 对应名称语言, 默认 zh | 2.2.6 | 
| extension | Object | 否 | 扩展表情 | 2.2.6 | 
JavaScript
// 表情信息可参考 http://unicode.org/emoji/charts/full-emoji-list.html
var config = {
  size: 25,
  url: '//f2e.cn.ronghub.com/sdk/emoji-48.png',
  lang: 'en',
  extension: {
    dataSource: {
      u1F914: { // 自定义 u1F914 对应的表情
        en: 'thinking face', // 英文名称
        zh: '思考', // 中文名称
        tag: '🤔', // 原生 Emoji
        position: '0 0' // 所在背景图位置坐标
      }
    },
    url: '//cdn.ronghub.com/thinking-face.png' // 新增 Emoji 背景图 url
  }
};
RongIMLib.RongIMEmoji.init(config);
获取列表
JavaScript
var list = RongIMLib.RongIMEmoji.list;
/*list => [{
  unicode: 'u1F600',
  emoji: '😀',
  node: span,
  symbol: '[笑嘻嘻]'
}]
*/
Emoji 转文字
在不支持原生 Emoji 渲染时,可显示对应名称,适用于消息输入。
JavaScript
var message = '😀😁测试 Emoji';
// 将 message 中的原生 Emoji 转化为对应名称
RongIMLib.RongIMEmoji.emojiToSymbol(message);
// => '[笑嘻嘻][露齿而笑]测试 Emoji'
文字转 Emoji
发送消息时,消息体里必须使用原生 Emoji 字符。
JavaScript
var message = '[笑嘻嘻][露齿而笑]测试 Emoji';
// 将 message 中的 Emoji 对应名称转化为原生 Emoji
RongIMLib.RongIMEmoji.symbolToEmoji(message);
// => '😀😁测试 Emoji'
Emoji 转 HTML
Web SDK 接收消息后,消息体内的原生 Emoji 字符会被解码为对应 Unicode 码,需调用转化方法才能正确显示。
JavaScript
var message = '\uf600测试 Emoji';
// 将 message 中的原生 Emoji (包含 Unicode ) 转化为 HTML
RongIMLib.RongIMEmoji.emojiToHTML(message);
// => "<span class='rong-emoji-content' name='[笑嘻嘻]'>😀</span>测试 Emoji"
文字 转 HTML
JavaScript
var message = '[露齿而笑]测试 Emoji';
// 将 message 中的 Emoji 对应名称转化为 HTML
RongIMLib.RongIMEmoji.symbolToHTML(message);
// => "<span class='rong-emoji-content' name='[露齿而笑]'>😁</span>测试 Emoji"
位置消息
API 参考:sendMessage
消息说明
| 消息类名 | ObjectName | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 | 
|---|---|---|---|---|---|---|
| LocationMessage | RC:LBSMsg | 存储 | 计数 | 存储 | 推送 | [位置] | 
LocationMessage 参数说明
| 属性名称 | 属性类型 | 是否必填 | 属性说明 | 
|---|---|---|---|
| longitude | Number | 是 | 经度 | 
| latitude | Number | 是 | 纬度 | 
| poi | String | 是 | 位置信息 | 
| content | String | 是 | 位置缩略图,图片需要是不带前缀的 base64 字符串 | 
| extra | String | 否 | 附加信息,一般为消息不显示消息内容 | 
代码示例
JavaScript
var locatMessageInfo = {
  latitude: 40.0317727,
  longitude: 116.4175057,
  poi: '融云',
  content: '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABsSFBcUERsXFhceHBsgKE',  // 位置图片 base64
}
var msg = new RongIMLib.LocationMessage(locatMessageInfo);
var conversationType = RongIMLib.ConversationType.PRIVATE;
var targetId = '单聊会话 ID';  // 目标 ID
RongIMClient.getInstance().sendMessage(conversationType, targetId, msg, {
  onSuccess: function (message) {
    console.log('发送位置消息成功', message);
  },
  onError: function (errorCode) {
    console.log('发送位置 消息失败', errorCode);
  }
});
正在输入状态消息
API 参考:sendMessage
消息说明
| 消息类名 | ObjectName | 存储属性 | 计数属性 | 
|---|