IM 即时通讯
Android
开发指南

消息概述

更新时间: 2023/10/25 13:56:20

消息一般指会话内消息,只能出现并展示在聊天界面里,一般是应用内的一个用户发给另一个用户(或群组/聊天室)的消息,例如文本消息、图片消息都属于会话内消息。

消息类型

目前 IM SDK 内置支持的会话内消息包括以下类型:

会话内消息类型
API关键字
说明 使用限制
文本消息 text 消息内容为普通文本 长度上限 5,000 字符
图片消息 image 消息内容为图片 URL 地址、尺寸、图片大小等信息 -
语音消息 audio 消息内容为语音文件的 URL 地址、时长、大小、格式等信息 通过AudioRecorder录制上传默认语音时长上限 120 秒(可自定义配置),文件大小无限制,建议应用根据业务场景进行限制
视频消息 video 消息内容为视频文件的 URL 地址、时长、大小、格式等信息 上传无视频时长和文件大小限制,建议应用根据业务场景进行限制
文件消息 file 消息内容为文件的 URL 地址、大小、格式等信息 格式不限,SDK 上传无大小限制,服务端上传文件最大 15 MB,建议应用根据业务场景进行限制
地理位置消息 location 消息内容为地理位置标题、经度、纬度信息 -
提示消息 tip 又叫做 Tip 消息,没有推送和通知栏提醒,主要用于会话内的通知提醒,例如进入会话时出现的欢迎消息,或是会话过程中命中敏感词后的提示消息等场景 -
通知消息 notification 主要用于群组、聊天室和超大群的事件通知,由服务端下发,客户端无法发送事件通知消息。 通知类消息有在线、离线、漫游机制;没有通知栏提醒 -
自定义消息 custom 开发者自定义的消息类型,例如红包消息、石头剪子布等形式的消息 -

消息功能

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

消息功能
说明
离线消息 不在线时其他人发来的消息。在下次登录时,会自动将离线期间暂存的离线消息自动下发到客户端 SDK。 点对点场景下发 最近 30 天内的最新的 5000 条离线消息,且每个会话最多 100 条最新的离线消息;群聊场景会话下发最近30天内的离线消息,且每个群聊会话最多下发 100 条最新的离线消息。
  • 聊天室消息不支持离线消息。
  • 同步离线消息时,如果该消息的发送者处于封禁状态,则不下发该离线消息。
  • 漫游消息 在切换设备(或卸载重装)登录时,可读取其他设备最近已接收过的消息,服务器记录的漫游消息将自动同步到客户端 SDK。漫游 7 天内最近 100 个会话,每个会话最近的 100 条消息。消息漫游默认关闭,需要在控制台单独开通。开通漫游之前的发送的消息无法漫游。
    多端同步 同账号多设备(客户端)同时在线时,其中一端收发的消息实时下发到其他端。多端登录策略请参考多端登录与互踢对于自己发送的消息,多端同步的情况下,登录自己账号的其他端会触发接收消息的通知,发送方是自己。
    历史消息 支持本地历史消息和云端历史消息。标准版 IM 可获取到最近 1 年的云端历史消息,最多支持扩展至 3 年(增值功能)
    消息撤回 撤回投递成功的消息,默认撤回 2 分钟内的消息,可撤回的时长可在用户控制台进行配置。撤回操作仅支持单聊和群聊消息,不支持聊天室消息的撤回
    已读回执 查看点对点或群聊会话中对方的消息已读未读状态
    消息转发 将消息转发给其他用户或群组
    @某人 通过消息扩展字段实现。当发送群消息@某人的时候,可以通过扩展字段带上被@的帐号列表发送出去;群成员收到群消息时,查看扩展字段的@帐号列表里有没有自己,如果有,则界面上做被@的提醒。
    正在输入 通过自定义系统通知实现,可参见:发送自定义系统通知
    消息确认与重发 当客户端 SDK 发送请求给云信服务器后,如果收到了服务器返回的 ACK 则认为已经成功发送到服务器,如果发送消息后30秒内由于网络抖动或断开等原因没有收到 ACK,SDK会尝试重发这条消息,最多尝试 3 次,即最大超时时间为2分钟

    消息相关注意事项

    • 如果同一个会话中既有离线消息,又有漫游消息,离线消息的优先级高于漫游消息,优先下发离线消息,如果离线消息数小于 100 条,才下发漫游消息。
    • 漫游消息是已读消息,不会触发未读数变化。离线消息中可能包含未读消息。
    • 如果发送消息时设置了不存离线消息,那么既不会有该消息的离线消息、云端历史,也不会有该消息的漫游消息。
    • 如果发送消息时配置了不存云端历史,那么既不会影响离线消息,也不会影响漫游消息。
    • 可以调用 SDK 接口清空服务器上保存的漫游消息(只影响自己,不影响对方的历史和漫游消息),也可以清空服务器上点对点会话的历史和漫游消息(只影响自己,不影响对方的历史和漫游消息)。

    容易混淆的消息概念

    通知消息和系统通知

    • 概念

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

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

    • 使用场景

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

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

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

    • 概念

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

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

    • 使用场景

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

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

    内容审核相关参数

    消息结构中的内容审核(反垃圾)相关参数如下:

    参数
    类型
    说明
    yidunAntiSpamExt String 透传给易盾的反垃圾增强版的检测参数,具体请参见易盾的反垃圾增强版用户可扩展参数,格式为 JSON,长度限制1024 反作弊相关的email、phone、token、extension,抄送到yidunAntiCheating。其他用户增值信息,抄送到yidunAntiSpamExt。
    yidunAntiSpamRes String 易盾反垃圾触发时返回的结果字段,格式为 JSON,具体说明参见审核结果字段说明
    yidunAntiCheating String 透传给易盾的反作弊检测参数,格式为 JSON,长度限制1024 ,具体请参见文本防刷版开发文档反作弊相关的email、phone、token、extension,抄送到yidunAntiCheating。其他用户增值信息,抄送到yidunAntiSpamExt。
    此文档是否对你有帮助?
    有帮助
    去反馈
    • 消息类型
    • 消息功能
    • 消息相关注意事项
    • 容易混淆的消息概念
    • 通知消息和系统通知
    • 自定义消息和自定义系统通知
    • 内容审核相关参数