3_3-云课堂场景-聊天室
1 功能概述
聊天室模块包括发言、点赞、历史记录、欢迎语等功能。聊天室模块在UI、交互、功能上,相较于其他模块,都会更复杂更庞大。因此设计、搭建、维护一个聊天室,也是一件较为费时费力的事情。我们推荐直接使用保利威封装好的聊天室模块,该部分代码完全开源,支持直接使用,以及二次开发。
2 核心类介绍
2.1 PLVLCChatroomViewModel
PLVLCChatroomViewModel 是云课堂场景 Scene 层聊天室的核心类,由于一个应用只允许存在一个聊天室,所以 PLVLCChatroomViewModel 采用的是单例的模式,负责创建、持有、销毁 Common 层聊天室核心类 PLVChatroomPresenter 的实例对象以及与 Common 层聊天室模块进行通信,核心类 PLVLCChatroomViewModel 提供功能如下:
对 View 层提供发送消息的接口;
管理 Common 层返回的消息模型;
在 View 层需要刷新 UI、更新列表数据时,通过回调通知 View 层。
2.1.1 生命周期
PLVLCChatroomViewModel 是单例类,进入直播间启动聊天室的时候调用 -setup 方法,离开直播间时调用 -clear 方法,代码如下:
代码注释提到的“直播间数据”指的是 PLVRoomDataManager 单例持有的 roomData。
2.1.2 获取聊天记录
Common 层聊天室核心类 PLVChatroomPresenter 在初始化完毕之后,会自动获取第一页的聊天记录,获取更多聊天记录代码如下:
-loadHistory 使用在 2.1.1 的 -setup 方法里初始化的 presenter 对象,调用 Common 层聊天室模块获取聊天室记录。
2.1.3 发送消息
PLVLCChatroomViewModel 类提供带货场景所需的发送消息的API,具体接口定义如下:
2.1.4 消息数组
PLVLCChatroomViewModel 类提供以下消息列表数组,作为聊天室 View 层的数据源:
2.1.5 监听与回调
PLVLCChatroomViewModel 允许设置多代理监听,提供了以下接口增加监听和移除监听:
上面两个接口提到的协议 PLVLCChatroomViewModelProtocol 提供了以下这些代理方法,这些方法均是用于在 View 层需要刷新 UI、更新列表数据时,通过回调通知 View 层:
Last updated
Was this helpful?