消息相关问题
消息没有收到或消息丢失如何处理?
单聊消息
确认消息是否发送成功。
确认接收方是否登录成功。
确认发送消息的指定会话是否与接收方一致。
群组消息
确认消息是否发送成功。
确认接收方是否登录成功。
确认接收方是否是群成员。
不管是 C2C 消息还是群消息,在以上步骤无法确认问题的时候,需要继续确认以下情况:
1. 确认是否注册了消息监听器。
2. 确认发送方发送消息的时候,是否把
elem
添加到消息中了(发消息的时候需要检查addElement
的返回值)。3. Android 的需要确认是否注册了多个消息监听器,并且在消息监听器中返回了
true
。收不到离线推送怎么处理?
即时通信 IM 消息存储时长是多久?
开发版:7天,不支持延长。
标准版:7天,支持延长。
进阶版:30天,支持延长。
为什么发送者已经被拉入黑名单但消息依旧显示发送成功?
即时通信 IM 在控制台的 黑名单检查 管理中提供发送消息后展示发送成功功能,当启用该功能时被拉黑用户侧发消息后仍展示发送成功 (实际对方不会收到消息) 。停用本设置项,则被拉黑用户侧发消息后会提示失败,SDK 会收到 错误码 20007 。具体配置请参照文档 黑名单检查。
如何通过 COS 将图片地址变成可下载的域名格式?
即时通信 IM 的消息唯一标识的规则是怎样的?
即时通信 IM 客户端单聊/群聊消息,Web 端单聊/群聊消息及服务端单聊消息唯一标识分别对应 msg_id,msgID 及 msgKey。
各端不同类型消息唯一标识的规则不同,具体规则如下:
客户端单聊/群聊消息 msg_id 的组成是:tinyid-clientTime-random。
Web 端单聊/群聊消息 msgID 的组成是(v2.17.0及以下):会话 id-msgSeq-random-1(我发送的消息) / 0(非我发送的消息)。
Web 端单聊/群聊消息 msgID 的组成是(v2.18.0及以上):tinyid-clientTime-random。
服务端单聊消息 msgKey 的组成是:clientSeq_random_serverTime。
服务端群聊消息通过群 id + msgSeq 来进行唯一标识。
直播群、社群是否支持 @ 消息?
直播群(AVChatRoom)不支持发送 @ 消息,社群(Community)支持 @ 单个用户,不支持 @ALL。
消息编辑 & 消息扩展 & 消息回应有什么区别?
消息功能 | 是否需要旗舰版 | 存储方式 | 拉取方式 | 并发设置是否会冲突 |
消息编辑 | 不需要 | 编辑信息直接存在消息体内,共用消息存储,单条消息最大 12K | 编辑信息直接通过消息体返回,无需单独拉取 | 会有冲突 |
消息扩展 | 需要 | 扩展信息独立存储,单条消息最大支持设置 300 个扩展,单个扩展最大支持 1K | 扩展信息需要单独拉取,仅支持逐条消息拉取 | 同一个扩展设置会冲突,不同的扩展设置不会冲突 |
消息回应 | 需要 | 回应信息独立存储,单条消息最大支持设置 10 个回应,单个回应最大支持 100 个用户 | 回应信息需要单独拉取,支持多条消息批量拉取 | 不会冲突 |
消息编辑:
优势:简单易用。
劣势:
如果多个用户同时编辑一条消息,可能会导致编辑冲突。
如果编辑后的消息内容过大,可能会导致消息大小超限(单条消息最大支持 12K)。
总结:消息编辑适合单个用户操作且存储需求较小的场景,比如订单消息场景,可以通过编辑消息的
cloudCustomData
字段来存储和修改订单的状态。消息扩展:
优势:
单条消息可以设置多个扩展,不同的扩展同时设置不会冲突。
扩展信息独立存储,不占用消息体大小,单条消息最大支持设置 300 个扩展,单个扩展最大支持 1K。
劣势:
同一个扩展同时设置,也会有冲突问题。
扩展信息不支持多条消息批量拉取。
总结:消息扩展适合多个用户操作且存储量较大的场景,比如问卷调查场景,每个扩展信息都是 {userID : 问卷调查内容} 的集合,不同的用户填写问卷调查不会冲突。
消息回应:
优势:
单条消息可以添加多个回应,回应添加不冲突。
回应信息独立存储,不占用消息体大小,单条消息最大支持添加 10 个回应,单个回应最大支持 100 个用户。
回应信息支持多条消息批量拉取。
支持单独拉取使用同一个回应的用户列表。
劣势:
回应信息只支持设置回应 ID,其他信息均不支持设置,SDK 会自动统计使用同一回应 ID 的用户列表。
总结:消息回应适合需要统计用户列表的场景,比如表情回应场景,用户添加表情回应只需传入表情 ID,SDK 会自动统计使用同一表情 ID 的用户列表。