互动白板
更新时间: 2022/11/10 09:12:54
您可以通过 NERoom SDK 的互动白板,实现互动涂鸦、实时同步、文档共享等功能,满足在线教育、互动娱乐、金融面签、视频会议等低延时高互动场景的需求。
功能介绍
互动白板的应用场景包括:
- 在线教育:用于线上语言培训、K12 学科辅导等课堂教学场景,教师可借助涂鸦、文本、直线、激光笔等基础教具,边演示课件边勾画要点。
- 视频会议:用于视频会议、在线培训等企业协同场景,满足主讲实时演示讲解、多方协同交流的需求。
- 互动娱乐:用于你画我猜、互动涂鸦等娱乐场景,满足更多有趣的游戏互动玩法。
- 金融面签:用于视频面签、远程见证等金融场景,满足面签双方远程办理业务、进行签名确认的需求。
注意事项
Windows 和 macOS 未内置白板功能,仅提供加载版本的 Url 以及与白板通信的消息字符串,需要由 App 加载白板并实现和白板 webview 的通信。具体请参见接入白板webview。
前提条件
创建房间时,已在 NECreateRoomOptions
方法中,设置 enableWhiteboard=true
,具体操作方法请参见创建房间。
加载白板
配置步骤
- 获取白板加载地址,用户根据自己的UI框架加载 webview。
virtual std::string getWhiteboardUrl() = 0
- 设置白板视图
virtual int setupWhiteboardCanvas(INEWhiteboardView* view) = 0
- 登录白板
virtual int login() = 0
- 监听webview
webGetAuth
事件,进行身份认证
virtual int auth() = 0
- 设置画笔
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 |
重置白板视图。 |
此文档是否对你有帮助?