基础消息功能

消息类型

IM SDK内的消息可以分为两类:会话内消息和系统通知消息。

会话内消息

会话内消息只能出现并展示在聊天界面里,一般是应用内的一个用户发给另一个用户(或群组/聊天室)的消息,例如文本消息、图片消息都属于会话内消息。目前IM SDK内置支持的会话内消息包括以下类型:

会话内消息类型 备注
文本消息 消息内容为普通文本
图片消息 消息内容为图片URL地址、尺寸、图片大小等信息
语音消息 消息内容为语音文件的URL地址、时长、大小、格式等信息,语音消息录制时长默认120秒,支持配置
视频消息 消息内容为语音文件的URL地址、时长、大小、格式等信息
文件消息 消息内容为文件的URL地址、大小、格式等信息,格式不限
地理位置消息 消息内容为地理位置标题、经度、纬度信息
通知消息 主要用于群事件的通知,由服务器下发,客户端无法生成通知消息。 通知类消息有在线、离线、漫游;不计入消息未读数;没有推送;没有通知栏提醒(如有需要,第三方自行实现)
提示消息 又叫做 Tip 消息,没有推送和通知栏提醒,主要用于会话内的通知提醒,例如进入会话时出现的欢迎消息,或是会话过程中命中敏感词后的提示消息等场景。
智能对话机器人消息 智能对话机器人消息,包括普通文本消息和跳转消息
自定义消息 开发者自定义的消息类型,例如红包消息、石头剪子布等形式的消息

系统通知消息

系统通知消息属于系统级别的消息,一般是系统下发给某一个用户或者群组的消息。系统通知消息包括内置和自定义两类。

类型 消息存储 未读计数 离线消息 漫游消息 消息推送
内置系统通知 没有 没有
自定义系统通知 没有 没有 没有

系统通知消息各平台开发指南请参见:

容易混淆的消息概念

通知消息和系统通知

通知消息属于会话内的一种消息,有在线、离线、漫游。目前用于(已操作完成的)群通知事件,不计入消息未读数。没有推送和通知栏提醒。

系统通知属于网易云通信内建的系统通知,由网易云通信服务器推送给用户的通知类消息,用于网易云通信系统类的事件通知。现在主要包括群变动的相关通知,例如入群申请,入群邀请等,如果第三方应用还托管了好友关系,好友的添加、删除也是这个类型的通知。系统通知由 SDK 负责接收和存储,并提供较简单的未读数管理。只有在线和离线,没有漫游。没有推送和通知栏提醒(如有需要,通过自定义系统通知实现)。

通知消息一般位于聊天界面的中间。例如:群名称更新、某某某退出了群聊等。

系统通知通常在验证消息列表中展现。例如:某某某请求加你为好友等。

自定义消息和自定义系统通知

自定义消息属于会话内的一种消息,主要提供给第三方开发者定制消息使用,有在线、离线、漫游、通知栏提醒。提供给第三方自定义的全局的通知类型,只有在线和离线,没有漫游。

自定义通知和自定义消息的不同之处在于,自定义消息归属于会话中的消息体系内,由 SDK 存储在消息数据库中,与网易云通信的其他内建消息类型一同展现给用户。而自定义通知主要用于第三方的一些事件状态通知,网易云通信不存储,也不解析这些通知,网易云通信仅仅负责替第三方传递和通知这些事件,起到透传的作用。

自定义消息一般与普通文本,语音消息相同,位于聊天界面的左右两侧。例如,猜拳、贴图、阅后即焚均可以采用自定义消息来实现。

自定义系统通知的一个典型场景为聊天双方处于P2P聊天界面时,显示的“正在输入通知”。

消息功能

除了支持丰富的消息类型外,IM SDK还为开发者提供了常见消息功能的支持。

消息功能 说明
离线消息 不在线时收到的消息,在下次登录时,会自动将离线期间收取的消息下发到 SDK。 点对点消息下发 30 天最近 100个 会话,每个会话最多 100 条;每个群聊会话最多下发 100 条离线消息
漫游消息 在新设备登录时,将服务器记录的漫游消息同步下来。SDK 自动漫游 7 天内最近 100 个会话,每个会话最近的 100 条消息
多端同步 多客户端同时在线时,消息实时下发到多端
历史消息 支持本地历史消息和云端历史消息。标准版IM可获取到最近1年的云端历史消息,最多支持扩展至3年(增值功能)
消息撤回 撤回投递成功的消息,默认撤回 2 分钟内的消息,可撤回的时长可在用户控制台进行配置。撤回操作仅支持单聊和群聊消息,不支持聊天室消息的撤回
已读回执 查看点对点会话中对方的已读未读状态
消息转发 将消息转发给其他用户或群组
@某人 通过消息扩展字段实现。当发送群消息@某人的时候,可以通过扩展字段带上被@的帐号列表发送出去;群成员收到群消息时,查看扩展字段的@帐号列表里有没有自己,如果有,则界面上做被@的提醒。
正在输入 通过自定义系统通知实现,可参见:发送自定义通知

最近会话

最近会话 ,即最近联系人列表,它记录了与用户最近有过会话的联系人信息,包括联系人帐号、联系人类型、最近一条消息的时间、消息状态、消息内容、未读条数等信息。

最近会话列表由 SDK 维护并提供查询、监听变化的接口,只要与某个用户或者群组有产生聊天(自己发送消息或者收到消息), SDK 会自动更新最近会话列表并通知上层,开发者无需手动更新。

某些场景下,开发者可能需要手动向最近会话列表中插入一条会话项(即插入一个最近联系人),例如:在创建完高级群时,需要在最近会话列表中显示该群的会话项。由创建高级群完成时并不会收到任何消息, SDK 并不会立即更新最近会话,此时要满足需求,可以在创建群成功的回调中,插入一条本地消息,以实现插入会话的目的。

需要注意的是,最近会话是本地的,不会漫游。在新设备登录后,最近会话列表会根据当前的漫游消息、离线消息等自动生成。