消息发送
功能描述
消息属性 | 消息描述 | 消息属性 | 消息描述 |
---|---|---|---|
消息类名 | 各端消息名 | 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 | -- | 当有离线缓存消息时,不进行远程推送提醒 |
危险
- 发送消息必须在成功连接融云服务器 connect 成功之后进行。
- 每秒最多发送 5 条消息。
发送普通消息
参数需按顺序传入,顺序为参数说明中的字段顺序。
API 参考:sendMessage
sendMessage 参数说明
参数 | 类型 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|
conversationType | Number | 是 | 会话类型,聊天室会话传入 RongIMLib.ConversationType.CHATROOM | 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 |
代码示例
var conversationType = RongIMLib.ConversationType.CHATROOM; // 群聊, 其他会话选择相应的消息类型即可
var targetId = '聊天室 ID'; // 目标 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 pushData = null; // Push 通知时附加信息, 可不填
var config = {
isVoipPush: true // 发送 voip push
};
RongIMClient.getInstance().sendMessage(conversationType, targetId, msg, callBack, isMentioned, pushContent, pushData, pushData, config);
message 属性说明
字段名 | 类型 | 说明 |
---|---|---|
conversationType | Number | 会话类型,聊天室会话传入 RongIMLib.ConversationType.CHATROOM |
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 | 否 | 附加信息,一般为消息不显示消息内容 |
代码示例
var textMessageInfo = {
content: 'hello RongCloud!',
extra: '附加信息'
}
var msg = new RongIMLib.TextMessage(textMessageInfo);
var conversationType = RongIMLib.ConversationType.CHATROOM;
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 | 否 | 附加信息,一般为消息不显示消息内容 |
代码示例
var msg = new RongIMLib.RichContentMessage({
title: '图文标题',
content: '图文内容',
imageUri: '图片上传到服务器的 url',
url: '富文本消息点击后打开的 URL'
});
var conversationType = RongIMLib.ConversationType.CHATROOM;
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
代码示例
var textMessageInfo = { content: '😀' }
var msg = new RongIMLib.TextMessage(textMessageInfo);
var conversationType = RongIMLib.ConversationType.CHATROOM;
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 插件引入
<!-- 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 初始化:默认参数初始化
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 |
// 表情信息可参考 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);
获取列表
var list = RongIMLib.RongIMEmoji.list;
/*list => [{
unicode: 'u1F600',
emoji: '😀',
node: span,
symbol: '[笑嘻嘻]'
}]
*/
Emoji 转文字
在不支持原生 Emoji 渲染时,可显示对应名称,适用于消息输入。
var message = '😀😁测试 Emoji';
// 将 message 中的原生 Emoji 转化为对应名称
RongIMLib.RongIMEmoji.emojiToSymbol(message);
// => '[笑嘻嘻][露齿而笑] 测试 Emoji'
文字转 Emoji
发送消息时,消息体里必须使用原生 Emoji 字符。
var message = '[笑嘻嘻][露齿而笑]测试 Emoji';
// 将 message 中的 Emoji 对应名称转化为原生 Emoji
RongIMLib.RongIMEmoji.symbolToEmoji(message);
// => '😀😁测试 Emoji'
Emoji 转 HTML
Web SDK 接收消息后,消息体内的原生 Emoji 字符会被解码为对应 Unicode 码,需调用转化方法才能正确显示。
var message = '\uf600测试 Emoji';
// 将 message 中的原生 Emoji (包含 Unicode ) 转化为 HTML
RongIMLib.RongIMEmoji.emojiToHTML(message);
// => "<span class='rong-emoji-content' name='[笑嘻嘻]'>😀</span>测试 Emoji"
文字 转 HTML
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 |