更新时间: 2021-03-01

# 概述

适用于应用内两个用户之间一对一聊天方式,两个用户间可以是好友也可以是陌生人,融云不对用户的关系进行维护管理,会话关系由融云负责建立并保持。

消息发送时序图

UserA -> RongCloudServer: 用户 A 向用户 B 发送消息 RongCloudServer -> RongCloudServer: 消息中是否含有屏蔽敏感词,如包含则不下发消息。 RongCloudServer -> RongCloudServer: 是否在用户 B 的黑/白名单中 RongCloudServer --> UserA: 在黑名单中或不在白名单中,返回发送失败状态 RongCloudServer -> RongCloudServer: 判断用户 B 是否在线 RongCloudServer -> UserB: 在线状态向用户 B 正常发送消息 UserB -> UserB: 在线状态直接接收消息 RongCloudServer -> RongCloudServer: 用户不在线时,将消息存储为离线消息 RongCloudServer -> UserB: 同时向用户 B 发送 Push,用户登录后接收离线消息

# 主要功能

功能 描述
离线消息 支持离线消息存储,存储时间可设置(1 ~ 7 天),默认存储 7 天。
消息提醒 离线状态,单聊中有新消息时,支持 Push 通知。
本地存储 存储在移动端本地,提供本地消息搜索功能。
历史消息 提供服务端消息存储存功能,需开通单群聊消息云存储,默认存储时长为 6 个月。
消息删除 支持按会话删除本地和存储在服务器的指定消息或会话中全部历史消息。
消息搜索 支持按关键字或用户搜索本地指定会话的消息内容。
消息阅读回执 发送单聊消息后如需要查看消息的阅读状态,可以使用此功能来发送阅读回执请求。
消息撤回 消息发送成功后,在有效时间内可撤回该条消息,默认可撤回时间为 2 分钟,时间可配置。
单聊会话免打扰 可设置指定的单聊会话,收到新的消息后是否进行提醒,默认进行新消息提醒。
单聊黑名单 不想接收到某一用户的消息时,可将此用户加入到黑名单中,应用中的每个用户都可以设置自己的黑名单列表
单聊白名单 对用户之间相互发送消息有限制要求的客户,可使用用户白名单功能,将用户加入白名单后,才能收到该用户发送的单聊消息

注:用户白名单服务与用户黑名单服务不能同时使用,融云默认开启的是用户黑名单服务,如需要开通白名单服务请提交工单申请开通。服务开通 30 分钟后生效,同时黑名单服务不再生效。

# 消息类型

消息类型 描述
文字消息 用来发送文字类消息,其中可以包括表情、超链接(会自动识别),客户端收到消息后计入未读消息数、进行存储。
语音消息 发送高质量的短语音消息,录制的语音文件存储到融云服务端,语音文件格式为 AAC,时长上限为 60 秒,客户端收到消息后计入未读消息数、进行存储。
图片消息 用来发送图片类消息,客户端收到消息后计入未读消息数、进行存储。图片缩略图格式为 JPG,大小建议不超过 100k。
GIF 图片消息 用来发送 GIF 动态图片消息,客户端收到消息后计入未读消息数、进行存储。
图文消息 用来发送图文消息,包含一个标题,一段文字内容和一张图片,客户端收到消息后计入未读消息数、进行存储。
文件消息 用来发送文件类消息,客户端收到消息后计入未读消息数、进行存储。
位置消息 用来发送地理位置消息,客户端收到消息后计入未读消息数、进行存储。
小视频消息 用来发送小视频消息,支持录制发送及选择本地视频文件发送两种方式,录制时长不超过 10 秒,本地选择视频文件方式时长不超过 2 分钟,小视频消息小视频文件格式为 .mp4,客户端收到消息后计入未读消息数、进行存储。
合并转发消息 IMKit SDK 中支持将多条消息合并为一条消息进行发送,合并后的消息以 HTML 文件的方式存储到融云服务端,客户端收到消息后计入未读消息数、进行存储。红包、阅后即焚及自定义消息的合并转发功能
命令消息 用来发送通用的指令通知消息,消息内可以定义任意 JSON 内容,与通用命令通知消息的区别是不存储、不计数,此类型消息没有 Push 通知。
自定义消息 融云内置消息类型,无法满足客户业务需求时,可通过自定义消息类型进行实现,接收自定义消息的格式解析及展示处理需要开发者自行实现

# 内置消息说明

以下为融云内置消息类型说明:

# 内容类消息

融云内置了一些内容类消息

消息类型 ObjectName
[文字消息] RC:TxtMsg
[语音消息] 旧消息类型 RC:VcMsg,新消息类型 RC:HQVCMsg
[图片消息] RC:ImgMsg
[GIF 图片消息] RC:GIFMsg
[图文消息] RC:ImgTextMsg
[文件消息] RC:FileMsg
[位置消息] RC:LBSMsg
[小视频消息] RC:SightMsg
[引用消息] RC:ReferenceMsg
[合并转发消息] RC:CombineMsg

内容类消息具体明细,请参考:消息类型-内容类消息文档

# 位置消息
ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
RC:LBSMsg 存储 计数 存储 推送 [位置]

消息结构:

发送位置消息时 content 参数的 JSON 结构如下:

{
  "content":"bhZPzJXimRwrtvc=",
  "latitude":39.9139,
  "longitude":116.3917,
  "poi":"北京云中融信网络科技有限公司",
  "user":
  {
    "id":"4242",
    "name":"Robin",
    "portrait":"http://example.com/p1.png",
    "extra":"extra"
  },
  "extra":""
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14

属性说明:

名称 类型 必传 说明
content String 表示位置图片缩略图,格式为 JPG,以 Base64 进行 Encode 后需要将所有 \r\n\r\n 替换成空。
latitude String 位置的纬度值。
longitude String 位置的经度值。
poi String 表示位置的 poi 信息。
user String 消息中携带的用户信息,详细查看 user 参数说明。
extra String 扩展信息,可以放置任意的数据内容,也可以去掉此属性。

user 属性说明:

名称 说明
id 发送用户 Id。
name 发送用户需要显示的名称。
portrait 发送用户需要显示的头象。
extra 扩展信息,可以放置任意的数据内容。
# 提示小灰条消息
ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
RC:InfoNtf 存储 不计数 存储 不推送

消息结构:

发送小灰条消息时 content 参数的 JSON 结构如下:

{
  "message":"请在聊天中注意人身财产安全",
  "extra":""
}
已复制
1
2
3
4

属性说明:

名称 类型 必传 说明
message String 提示条消息内容。
extra String 扩展信息,可以放置任意的数据内容,也可以去掉此属性。
# 资料变更通知消息
ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
RC:ProfileNtf 存储 不计数 存储 不推送

消息结构:

发送用户资料变更消息时 content 参数的 JSON 结构如下:

{
  "operation":"Update",
  "data":"{\"nickname\":\"韩梅梅\", \"hometown\":\"beijing\"}",
  "extra":""
}
已复制
1
2
3
4
5

属性说明:

名称 类型 必传 说明
operation String 资料通知操作,可以自行定义。
data String 操作的数据。
extra String 扩展信息,可以放置任意的数据内容,也可以去掉此属性。
# 联系人(好友)通知消息
ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
RC:ContactNtf 存储 不计数 存储 不推送

消息结构:

发送加好友消息时 content 参数的 JSON 结构如下:

{
  "operation":"Request",
  "sourceUserId":"123",
  "targetUserId":"456",
  "message":"我是小艾,能加一下好友吗?",
  "extra":""
}
已复制
1
2
3
4
5
6
7

属性说明:

名称 类型 必传 说明
operation String 联系人操作的指令,官方针对 operation 属性定义了 "Request", "AcceptResponse", "RejectResponse" 几个常量,也可以由开发者自行扩展。
sourceUserId String 发出通知的用户 Id。
targetUserId String 单聊会话为接收通知的用户 Id,群聊、聊天室会话为会话 Id。
message String 表示请求或者响应消息,如添加理由或拒绝理由。
extra String 扩展信息,可以放置任意的数据内容,也可以去掉此属性。
# 命令消息
ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
RC:CmdMsg 不存储 不计数 存储 不推送

消息结构:

运营平台向终端发送指令信息时可使用此命令消息,消息中 content 参数的 JSON 结构如下:

{
  "name":"AtPerson",
  "data":"{\"sourceId\":\"9527\"}"
}
已复制
1
2
3
4

属性说明:

名称 类型 必传 说明
name String 命令名称,可以自行定义。
data String 命令的内容。
# 已读通知消息

用来发送消息已经被接收到的状态消息,客户端收到消息后不计入未读消息数、不存储,此类型消息没有 Push 通知。

ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
RC:ReadNtf 不存储 不计数 存储

消息结构:

发送已读通知消息时 content 结构如下:

{
  "lastMessageSendTime":1408706337,
  "messageUId":"XXXXXX",
  "type":1
}
已复制
1
2
3
4
5

属性说明:

名称 类型 必传 说明
lastMessageSendTime Int 已读的最后一条消息的发送时间。
messageUId String 已读的最后一条消息的 UId,消息唯一标识。
type Int 会话类型,目前该消息只支持单聊会话,类型为 1。

文档是否解决您的问题 ?

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