7_6-核心common-PPT

1 功能概述

common模块的ppt是使用mvp模式实现的,将PPT的一些UI无关的底层逻辑封装在了这个模块。

2 MVP模式

PPT模块包含了两个MVP的接口,分别是悬浮窗和PPT:

悬浮窗

/**
 * date: 2020/9/16
 * author: HWilliamgo
 * description: 悬浮窗业务MVP
 */
public interface IPLVLiveFloatingContract {

    /**
     * 悬浮窗View
     */
    interface IPLVLiveFloatingView {

        /**
         * 设置讲师信息
         *
         * @param nick   讲师昵称
         * @param picUrl 讲师图片Url
         */
        void updateTeacherInfo(String nick, String picUrl);
    }

    /**
     * 悬浮窗业务Presenter
     */
    interface IPLVLiveFloatingPresenter {
        /**
         * 初始化
         */
        void init(IPLVLiveFloatingView view);

        /**
         * 销毁
         */
        void destroy();
    }
}

PPTView

2.1 Presenter实现逻辑

2.1.1 PLVLiveFloatingPresenter

悬浮窗的Presenter主要的逻辑是,用socket管理器监听了聊天室发出的讲师信息事件,并将数据解析后更新到View接口:

2.2.2 PLVPPTPresenter

PLVPPTPresenter中实现了对PPT事件的收发操作。

  1. 监听server发来的PPT消息,解析后将消息发送到View层,由View层的webView进行处理:

  2. 当用户操作PPT画笔时,要将画笔数据发送到server(该功能暂未实现)

3 SDK核心类介绍

3.1 用PolyvSocketWrapper收发服务端PPT消息

common模块的PPT用到的SDK类是PolyvSocketWrapper,利用该类,既可以监听服务端老师发送的PPT事件,也可以主动发送PPT数据到服务端。

具体可以参考PLVLiveFloatingPresenter和PLVPPTPresenter中对该类的使用。

3.2 PPT使用的WebView

PPT使用的是SDK提供的PolyvPPTWebView类进行渲染的,对该类的使用均封装在了Scene模块的PLVLCPPTView类中,只是调用逻辑在presenter。

他有3类API:

  1. 通用对外API

  2. 直播对外API

  3. 回放对外API

Last updated

Was this helpful?