• UIKit
  • SDK
  • 服务端 API
Chat/
UIKit/
iOS and macOS/
构建基础界面/
UIKit
  • 界面库介绍
  • Run Demo
  • 快速开始
  • 集成组件
    • TUIKit
    • TUIChat
  • 构建基础界面
    • 聊天界面
    • 会话列表
    • 联系人列表
    • 添加联系人
    • 创建群聊
    • 音视频通话
  • 功能
    • 表情回应
    • 消息引用
    • 已读回执
    • 用户在线状态
    • 文本消息翻译
    • 语音转文字
    • 搜索消息
  • 自定义
    • 自定义消息
    • 自定义表情
  • 本地化
  • 更新日志
  • 开发指引
  • 控制台指南
    • 创建和升级应用
    • 基本配置
    • 功能配置
    • 账号管理
    • 群组管理
    • 回调配置
  • 产品介绍
    • 消息管理
      • 单聊消息
      • 消息存储
      • 离线推送
      • 群消息
      • 消息格式
    • 账号系统
      • 登陆验证
      • 在线状态管理
    • 群相关
      • 群组系统
      • 群组管理
    • 用户资料和关系链
      • 资料管理
      • 关系链管理
  • 购买指南
    • 计费概述
    • 价格中心
  • 错误码

会话列表

本文会引导您构建会话列表界面。

效果展示

加载会话列表效果如下所示:



开发环境要求

Xcode 10 及以上
iOS 9.0 及以上

前置条件

在构建界面之前,请确保您已经完成了以下 4 件事:
1. 在控制台创建了一个应用。
2. 在控制台创建了一些用户账号。
3. 集成了 TUIKitTUIConversation
4. 调用 TUILoginlogin 接口登录组件。
注意:
1. 所有组件都是这个登录接口。每次启动应用,登录一次即可。
2. 请确保登录成功,我们建议您在登录成功的回调里进行下文的操作。
如果您尚未完成以上 4 步,请先参考 快速开始 中的对应步骤完成,否则在实现下文功能时可能遭遇阻碍。
如果您已经完成,请继续阅读下文。

步骤说明

构建会话列表通常分为以下 3 步:
1. 加载会话列表。列表对应着 TUIConversationListController 对象。加载后,TUIConversationListController 会自动读取最近会话。
2. 用户点击会话列表中的某一行,TUIConversationListController 会抛出 didSelectConversation 事件。
3. didSelectConversation 中响应点击,通常是进入该会话的聊天界面。
示例代码如下所示:
简约版
经典版
#import "TUIConversationListController_Minimalist.h"
#import "TUIBaseChatViewController_Minimalist.h"
#import "TUIGroupChatViewController_Minimalist.h"
#import "TUIC2CChatViewController_Minimalist.h"

// ConversationController is your own ViewController
@implementation ConversationController
- (void)viewDidLoad {
[super viewDidLoad];
// TUIConversationListController_Minimalist
TUIConversationListController_Minimalist *vc = [[TUIConversationListController_Minimalist alloc] init];
vc.delegate = self;
// Option 1: push vc.
[self.navigationController pushViewController:vc animated:YES];
// Option 2: Add TUIConversationListController_Minimalist to your own ViewController
// [self addChildViewController:vc];
// [self.view addSubview:vc.view];
}

- (void)conversationListController:(TUIConversationListController_Minimalist *)conversationController
didSelectConversation:(TUIConversationCellData *)conversation {
// Conversation list click event, typically, opening the chat UI
TUIChatConversationModel *conversationData = [TUIChatConversationModel new];
conversationData.userID = conversation.userID;
conversationData.title = conversation.title;
conversationData.faceUrl = conversation.faceUrl;
// Create chatVC by groupID or userID.
TUIBaseChatViewController_Minimalist *chatVC = nil;
if (conversationData.groupID.length > 0) {
chatVC = [[TUIGroupChatViewController_Minimalist alloc] init];
} else if (conversationData.userID.length > 0) {
chatVC = [[TUIC2CChatViewController_Minimalist alloc] init];
}
chatVC.conversationData = conversationData;
// Option 1: push chatVC.
[self.navigationController pushViewController:chatVC animated:YES];
// Option 2: add chatVC to your own ViewController.
// [self addChildViewController:vc];
// [self.view addSubview:vc.view];
}

@end
#import "TUIConversationListController.h"
#import "TUIBaseChatViewController_Minimalist.h"
#import "TUIGroupChatViewController.h"
#import "TUIC2CChatViewController.h"

// ConversationController is your own ViewController
@implementation ConversationController
- (void)viewDidLoad {
[super viewDidLoad];
// TUIConversationListController
TUIConversationListController *vc = [[TUIConversationListController alloc] init];
vc.delegate = self;
// Option 1: push vc.
[self.navigationController pushViewController:vc animated:YES];
// Option 2: Add TUIConversationListController to your own ViewController
// [self addChildViewController:vc];
// [self.view addSubview:vc.view];
}

- (void)conversationListController:(TUIConversationListController *)conversationController
didSelectConversation:(TUIConversationCellData *)conversation {
// Conversation list click event, typically, opening the chat UI
TUIChatConversationModel *conversationData = [TUIChatConversationModel new];
conversationData.userID = conversation.userID;
conversationData.title = conversation.title;
conversationData.faceUrl = conversation.faceUrl;
// Create chatVC by groupID or userID.
TUIBaseChatViewController *chatVC = nil;
if (conversationData.groupID.length > 0) {
chatVC = [[TUIGroupChatViewController alloc] init];
} else if (conversationData.userID.length > 0) {
chatVC = [[TUIC2CChatViewControlleralloc] init];
}
chatVC.conversationData = conversationData;
// Option 1: push chatVC.
[self.navigationController pushViewController:chatVC animated:YES];
// Option 2: add chatVC to your own ViewController.
// [self addChildViewController:vc];
// [self.view addSubview:vc.view];
}

@end
注意:
如果您事先没有跟任何人、任何群组发送过消息,是不会产生会话的,此时加载 TUIConversationListController ,列表为空。为了体验效果,建议您先给一些账号发送消息,触发会话的产生。如果您想了解如何在聊天界面发送消息,请参考文档:构建聊天界面

更多实践

您可以本地 运行 TUIKitDemo 源码,探索更多的界面实现。

联系我们

如果您对本文有疑问,欢迎加入Telegram 技术交流群 ,您将获得可靠的技术支持。