保利威文档中心

幫助中心

4_3-带货场景-聊天室

更新時間:2023-04-17 15:27:57

1 功能概述

聊天室模組包含發言、按讚、歷史記錄、歡迎語等功能。聊天室模組在 UI、互動、功能上,相較於其他模組,會更複雜且更龐大。因此設計、搭建、維護一個聊天室,也是一件較為耗時費力的事情。我們推薦直接使用保利威封裝好的聊天室模組,該部分程式碼完全開源,支援直接使用以及二次開發。

2 使用演示

聊天室在帶貨場景分為直播首頁PLVECLiveHomeFragment的聊天室和回放首頁PLVECPalybackHomeFragment中的聊天室。

聊天室遵循MVP模式,因此方法之間的呼叫非常簡單明瞭,在View中可以自由選擇感興趣的聊天室事件進行監聽,並呼叫Presenter相關方法進行聊天室的操作。

以回放聊天室監聽公告事件為例,程式碼如下:

// PLVECPalybackHomeFragment.java
private IPLVChatroomContract.IChatroomView chatroomView = new PLVAbsChatroomView() {
    // 实现了接受公告事件的接口方法,监听公告事件
    @Override
    public void onBulletinEvent(@NonNull PolyvBulletinVO bulletinVO) {
        super.onBulletinEvent(bulletinVO);
        // 在acceptBulletinMessage方法中处理监听接受到的公告事件,显示到界面当中
        acceptBulletinMessage(bulletinVO);
    }

    // 实现了接受移除公告事件的方法,监听移除公告事件
    @Override
    public void onRemoveBulletinEvent() {
        super.onRemoveBulletinEvent();
        // 移除界面中的公告
        removeBulletin();
    }
};

3 實作介紹

3.1 回放 - PLVECPalybackHomeFragment

帶貨場景下的回放聊天室,用於顯示公告的更新。該類別和聊天室 mvp-presenter 的通訊,是透過該類別中定義的聊天室 mvp-view,當呼叫聊天室 mvp-presneter 的 registerView 方法後,聊天室 mvp-presneter 即可通知聊天室 mvp-view 的更新,同時聊天室 mvp-view 也能呼叫聊天室 mvp-presenter 的方法。定義聊天室 mvp-view 的範例程式碼:

// 聊天室presenter(定义在父类PLVECCommonHomeFragment当中)
protected IPLVChatroomContract.IChatroomPresenter chatroomPresenter;

// PLVECLiveHomeFragment.java
// 聊天室mvp-view
private IPLVChatroomContract.IChatroomView chatroomView = new PLVAbsChatroomView() {
    // 聊天室需要监听事件的抽象方法实现...
}

// 注册mvp-view
@Override
protected void registerChatroomView() {
    chatroomPresenter.registerView(chatroomView);

    //设置信息索引,需在chatroomPresenter.registerView后设置
    chatMessageAdapter.setMsgIndex(chatroomPresenter.getViewIndex(chatroomView));
}

3.2 直播 - PLVECLiveHomeFragment

帶貨場景下的直播聊天室,包含聊天資訊列表、傳送資訊輸入框、按讚佈局、歡迎語、公告等元素。mvp-view 和 mvp-presenter 之間的建構邏輯與回放相似,在直播聊天室中包含了更多直播情境所需監聽的聊天室事件用例,詳情請參考 demo 中PLVECLiveHomeFragment聊天室相關程式碼區塊。

联系客服,在线咨询