消息未读数
未读消息计数是 IMKit 默认提供的一项功能,可告知用户每个会话中未读消息的数量。
未读消息计数显示在会话列表类 RCConversationListViewController 的 RCConversationCell 中。每个会话的未读消息数显示在会话图标右上角。如果未读消息数超过 100 条,则会显示为 99+ 。

用法
IMKit SDK 默认已经实现了一整套会话未读消息数的获取和展示逻辑,使用默认会话列表和会话页面时,不需要额外调用会话相关 API。
IMKit 会在用户进入单聊、群聊、系统会话页面时将会话未读数清零。在用户多端登录时,IMKit 会在设备间同步会话的阅读状态,您也可以按业务需求选择关闭该功能,详见下文多端同步阅读状态。
定制化
如果 IMKit 已有实现无法满足您的需求,可以使用 IMKit 或 IMLib SDK 中相关 API。
获取或清除会话未读数
IMKit 未直接提供获取、清除会话未读数的 API。如果您有自定义需求,可以调用 IMLib SDK 相关方法。例如:
- 获取所有会话未读数
- 按会话类型获取未读数
- 清除单个会话未读数
具体的核心类、API 与 使用方法,详见 IMLib 文档 处理会话未读消息数。
IMLib 中的方法并不提供页面刷新能力,您需要根据业务需求自定义通知机制进行页面刷新。
设置为仅显示红点
如果希望仅在会话列表中的 RCConversationCell 上显示红点,而不显示具体数字,您可以重写 RCConversationListViewController 的willDisplayConversationTableCell:atIndexPath: 方法,设置 isShowNotificationNumber 属性值为 NO。
- (void)willDisplayConversationTableCell:(RCConversationBaseCell *)cell atIndexPath:(NSIndexPath *)indexPath {
//会话有新消息通知的时候显示数字提醒,设置为NO,不显示数字只显示红点
((RCConversationCell *)cell).isShowNotificationNumber = NO;
}
自定义未读消息角标 UI
会话列表中的 RCConversationCell 上的未读消息角标 UI 由 RCConversationListViewController 的 bubbleTipView 属性控制。 您可以重写 RCConversationListViewController 的willDisplayConversationTableCell:atIndexPath: 方法修改。
接口原型
/// 即将显示Cell的回调
/// - Parameter cell: 即将显示的Cell
/// - Parameter indexPath: 该Cell对应的会话Cell数据模型在数据源中的索引值
/// 您可以在此回调中修改Cell的一些显示属性。
- (void)willDisplayConversationTableCell:(RCConversationBaseCell *)cell atIndexPath:(NSIndexPath *)indexPath;
参数说明
下表仅列出了 bubbleTipView 中的部分属性。完整属性列表请参见 API 文档中的 RCMessageBubbleTipView。
| 项目 | 属性 |
|---|