会话列表页面
IMKit SDK 会话的产生依赖本地数据库中的消息,会话列表页面展示了当前用户设备上的所有本地会话。一但 SDK 的本地消息数据库生成消息,SDK 就会生成对应的会话,并按照时间倒序排列,置顶会话会排在最前。
如果开启了多设备消息同步,在 换新设备登录 或 应用卸载重装 场景下,离线补偿机制仅可获取到最近(默认离线补偿天数为 1 天,最大 7 天)的单聊、群聊会话消息。早于该天数的会话无法通过离线补偿机制获取。因此,离线补偿后的 会话列表可能与原设备上或卸载前的会话列表并不一致(您可能会有丢失部分会话的错觉)。
IMKit 提供基于 UIKit UITableView
的会话页面类 RCConversationListViewController
。
会话列表页面一般由标题栏和会话列表两部分组成。
初始化
- 基于 IMKit 开发时,推荐继承使用
RCConversationListViewController
类,创建自定义的会话列表页面。 - 在排查或复现与会话页面相关的问题时,可以直接使用
RCConversationListViewController
类来验证是否是因为继承重写的原因引起的问题。
您可以调用 RCConversationListViewController
类的初始化方法构建会话列表页面,设置会话列表中需要包含的会话的类型。您需要将 RCConversationType
转为 NSNumber 构建 Array。
参数说明
参数 | 类型 | 说明 |
---|---|---|
displayConversationTypeArray | NSArray (NSNumber *) | 列表中需要显示的会话类型数组。需要将 RCConversationType 转为 NSNumber构建 Array。 |
collectionConversationTypeArray | NSArray (NSNumber *) | 列表中需要聚合为一条显示的会话类型数组。您需要将 RCConversationType 转为 NSNumber构建 Array。详见按类型聚合会话。 |
示例代码
NSArray *displayConversationTypeArray = @[@(ConversationType_PRIVATE), @(ConversationType_GROUP), @(ConversationType_SYSTEM)];
NSArray *collectionConversationTypeArray = nil;
RCConversationListViewController *conversationListVC = [[RCDChatListViewController alloc] initWithDisplayConversationTypes:displayConversationTypeArray collectionConversationType:collectionConversationTypeArray];
[self.navigationController pushViewController:conversationListVC animated:YES];
定制化
您可以对 IMKit 会话列表界面的样式进行自定义修改。您可以通过查看 RCConversationListViewController 的头文件了解具体可以自定义的内容。
自定义标题栏
IMKit 的 RCConversationListViewController
使用了系统的导航栏,可用于显示会话列表的标题,自行通过 UIViewController
的 title
属性设置标题。
修改会话头像形状
会话列表中的每个会话项目上均会显示一个头像图标,即会话头像(不是聊天页面内中消息列表中的头像)。单聊会话显示对方用户头像,群聊会话显示群组头像,聚合会话显示默认头像或应用程序主动设置的头像。 IMKit 支持通过 IMKit 全局配置单独控制会话列表中的会话头像样式。
会话头像显示默认为矩形,可修改为圆形。头像显示大小默认值为 46*46
。请在 App 初始化之后,IM 连接之前调用以下代码进行设置:
参数说明
RCUserAvatarStyle
说明:
类型名 | 说明 |
---|---|
RC_USER_AVATAR_RECTANGLE | 矩形 |
RC_USER_AVATAR_CYCLE | 圆形 |
示例代码
RCKitConfigCenter.ui.globalConversationAvatarStyle = RC_USER_AVATAR_CYCLE;
会话头像高度必须大于或者等于 36,修改方法如下:
示例代码
RCKitConfigCenter.ui.globalConversationPortraitSize = CGSizeMake(46, 46);
是否展示网络连接状态提示
当连接断开或者重连时,IMKit SDK 会在会话列表页面顶部展示连接状态提示栏,该功能默认开启。可通过 RCConversationListViewController
的 isShowNetworkIndicatorView
属性关闭该提示。
@property (nonatomic, assign) BOOL isShowNetworkIndicatorView;
如需修改提示文字,可修改语言包中的 en.lproj
和 zh-Hans.lproj
。
自定义空视图
RCConversationListViewController
中提供了会话列表空视图 emptyConversationView
(即无会话需要显示)。如果您需要自定义空视图 View,赋值给 emptyConversationView
即可。