互动白板

更新时间: 2022/11/10 09:12:54

您可以通过 NERoom SDK 的互动白板,实现互动涂鸦、实时同步、文档共享等功能,满足在线教育、互动娱乐、金融面签、视频会议等低延时高互动场景的需求。

功能介绍

互动白板的应用场景包括:

  • 在线教育:用于线上语言培训、K12 学科辅导等课堂教学场景,教师可借助涂鸦、文本、直线、激光笔等基础教具,边演示课件边勾画要点。
  • 视频会议:用于视频会议、在线培训等企业协同场景,满足主讲实时演示讲解、多方协同交流的需求。
  • 互动娱乐:用于你画我猜、互动涂鸦等娱乐场景,满足更多有趣的游戏互动玩法。
  • 金融面签:用于视频面签、远程见证等金融场景,满足面签双方远程办理业务、进行签名确认的需求。

注意事项

Windows 和 macOS 未内置白板功能,仅提供加载版本的 Url 以及与白板通信的消息字符串,需要由 App 加载白板并实现和白板 webview 的通信。具体请参见接入白板webview

前提条件

创建房间时,已在 NECreateRoomOptions 方法中,设置 enableWhiteboard=true,具体操作方法请参见创建房间

加载白板

配置步骤

  1. 获取白板加载地址,用户根据自己的UI框架加载 webview。
virtual std::string getWhiteboardUrl() = 0
  1. 设置白板视图
virtual int setupWhiteboardCanvas(INEWhiteboardView* view) = 0
  1. 登录白板
virtual int login() = 0
  1. 监听webviewwebGetAuth事件,进行身份认证
virtual int auth() = 0

  1. 设置画笔
virtual int setEnableDraw(bool enable) = 0

示例代码

实现加载白板的示例代码如下:

// 实现INEWhiteboardView
class MeetingWhiteboardView : public INEWhiteboardView {
public:
    void setWebview(QWebEngineView* webview);
    virtual void onLogin(const std::string& webScript) override {
        m_webview->page()->runJavaScript(QString::fromStdString(webScript));
    }
    virtual void onAuth(const std::string& webScript) override {
        m_webview->page()->runJavaScript(QString::fromStdString(webScript));
    }
    virtual void onLogout(const std::string& webScript) override {
        m_webview->page()->runJavaScript(QString::fromStdString(webScript));
    }
    virtual void onDrawEnableChanged(const std::string& webScript) override {
        m_webview->page()->runJavaScript(QString::fromStdString(webScript));
    }
    virtual void onToolConfigChanged(const std::string& webScript) override {
        m_webview->page()->runJavaScript(QString::fromStdString(webScript));
    }

private:
    QPointer<QWebEngineView> m_webview;
};

void whiteboardWidget::startLoadWhiteboard()
{
    m_pRoomContext->getWhiteboardController()->setupWhiteboardCanvas(m_whiteboardView);
    QString url = QString::fromStdString(m_pRoomContext->getWhiteboardController()->getWhiteboardUrl());
    webview->setUrl(url);
}

void whiteboardWidget::setDrawEnable(bool enableDraw)
{
    m_pRoomContext->getWhiteboardController()->setEnableDraw(enable);
}

void whiteboardWidget::onWebGetAuth()
{
    m_pRoomContext->getWhiteboardController()->auth();
}

void whiteboardWidget::onWebPageLoadFinished()
{
    m_pRoomContext->getWhiteboardController()->login();
}

开启白板共享

实现开启白板共享的示例代码如下:

    auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
    if(context) {
        context->getWhiteboardController()->startWhiteboardShare([this](int code, const std::string& msg){
            qInfo() << "onOpenWhiteboard code: " << code;
            qInfo() << "onOpenWhiteboard msg: " << QString::fromStdString(msg);
        });
    }

停止白板共享

实现关闭白板共享功能的示例代码如下:

    auto context = m_pRoomKit->getRoomService()->getRoomContext(roomUuid);
    if(context) {
        context->getWhiteboardController()->stopWhiteboardShare([this](int code, const std::string& msg){
            qInfo() << "onCloseWhiteboard code: " << code;
            qInfo() << "onCloseWhiteboard msg: " << QString::fromStdString(msg);
        });
    }

API 参考

方法 功能描述
getWhiteboardUrl 获取白板加载地址
setupWhiteboardCanvas 设置白板视图
login 登录
logut 登出
auth 身份认证
setEnableDraw 设置白板是否可绘制
startWhiteboardShare 开始白板共享
stopWhiteboardShare 关闭白板共享
resetWhiteboardCanvas 重置白板视图。
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 注意事项
  • 前提条件
  • 加载白板
  • 配置步骤
  • 示例代码
  • 开启白板共享
  • 停止白板共享
  • API 参考