- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 购买指南
- 快速入门
- 管理员指南
- 视频会议用户指南
- 智能会议室用户指南
-
开发与集成
- 开发指南
- 服务端API参考
-
客户端SDK参考
- SDK概述
- Demo体验
- 一分钟跑通Demo
- SDK下载
- SDK维护周期
-
Android SDK
- 概述
- 快速入门
- 典型场景
- 接口参考
- 通知参考
- 错误码参考
-
版本更新内容
- 100.10.7更新内容
- 100.10.6更新内容
- 100.10.5更新内容
- 100.9.7更新内容
- 100.9.5更新内容
- 100.7.13更新内容
- 100.7.8更新内容
- 100.7.6更新内容
- 100.7.5更新内容
- 100.5.5更新内容
- 100.3.6更新内容
- 90.12.7更新内容
- 90.12.5更新内容
- 90.10.8更新内容
- 90.9.8更新内容
- 90.9.7更新内容
- 90.9.6更新内容
- 90.9.5更新内容
- 90.7.5更新内容
- 90.6.5更新内容
- 80.15.21更新内容
- 80.15.5更新内容
- 80.13.6更新内容
- 80.13.5更新内容
- 80.12.6更新内容
- 80.12.5更新内容
- 80.10.6更新内容
- 80.10.5更新内容
- 80.9.5更新内容
- 80.8.5更新内容
- 80.7.5更新内容
- 80.5.11更新内容
- 80.5.5更新内容
- 70.16.5更新内容
- 70.14.5更新内容
- 70.13.5更新内容
- 70.12.6更新内容
- 70.12.4更新内容
- 70.11.5更新内容
- 70.10.5更新内容
- 70.9.5更新内容
- 70.8.6更新内容
- 70.8.5更新内容
- 70.7.5更新内容
- 70.6.5更新内容
- 70.5.8更新内容
- 70.4.5更新内容
- 70.3.5更新内容
- 60.15.6更新内容
- 60.13.2更新内容
- 60.12.5更新内容
- 60.11.1更新内容
- 60.10.5更新内容
- 60.8.1更新内容
- 60.7.1更新内容
- 修订记录
-
iOS SDK
- 概述
- 快速入门
- 典型场景
- 接口参考
- 通知参考
- 错误码参考
-
版本更新内容
- 100.10.7更新内容
- 100.10.6更新内容
- 100.10.5更新内容
- 100.9.7更新内容
- 100.9.5更新内容
- 100.7.13更新内容
- 100.7.8更新内容
- 100.7.6更新内容
- 100.7.5更新内容
- 100.5.5更新内容
- 100.3.6更新内容
- 90.12.7更新内容
- 90.12.5更新内容
- 90.10.8更新内容
- 90.9.6更新内容
- 90.9.5更新内容
- 90.7.5更新内容
- 90.6.5更新内容
- 80.15.21更新内容
- 80.15.6更新内容
- 80.15.5更新内容
- 80.13.8更新内容
- 80.13.6更新内容
- 80.13.5更新内容
- 80.12.6更新内容
- 80.12.5更新内容
- 80.10.5更新内容
- 80.9.5更新内容
- 80.8.5更新内容
- 80.7.5更新内容
- 80.5.11更新内容
- 80.5.5更新内容
- 70.16.5更新内容
- 70.14.5更新内容
- 70.13.5更新内容
- 70.12.6更新内容
- 70.12.4更新内容
- 70.11.5更新内容
- 70.10.5更新内容
- 70.9.5更新内容
- 70.8.6更新内容
- 70.8.5更新内容
- 70.7.5更新内容
- 70.6.5更新内容
- 70.5.8更新内容
- 70.4.5更新内容
- 70.3.5更新内容
- 60.15.5更新内容
- 60.13.2更新内容
- 60.12.5更新内容
- 60.11.6更新内容
- 60.10.5更新内容
- 60.8.1更新内容
- 60.7.1更新内容
- 90.10.8更新内容
- 修订记录
-
Windows SDK
- 概述
- 快速入门
- 典型场景
- 接口参考
- 通知参考
- 错误码参考
-
版本更新内容
- 100.10.7更新内容
- 100.10.6更新内容
- 100.10.5更新内容
- 100.9.7更新内容
- 100.9.5更新内容
- 100.7.13更新内容
- 100.7.8更新内容
- 100.7.6更新内容
- 100.7.5更新内容
- 100.5.5更新内容
- 100.3.7更新内容
- 100.3.6更新内容
- 90.12.7更新内容
- 90.12.5更新内容
- 90.9.5更新内容
- 90.7.6更新内容
- 90.7.5更新内容
- 90.6.5更新内容
- 80.15.21更新内容
- 80.15.5更新内容
- 80.13.6更新内容
- 80.13.5更新内容
- 80.12.7更新内容
- 80.12.6更新内容
- 80.12.5更新内容
- 80.10.5更新内容
- 80.9.5更新内容
- 80.8.5更新内容
- 80.7.5更新内容
- 80.5.11更新内容
- 80.5.5更新内容
- 70.16.5更新内容
- 70.14.5更新内容
- 70.13.5更新内容
- 70.12.6更新内容
- 70.12.4更新内容
- 70.11.5更新内容
- 70.10.5更新内容
- 70.9.5更新内容
- 70.8.6更新内容
- 70.8.5更新内容
- 70.7.5更新内容
- 70.6.5更新内容
- 70.5.8更新内容
- 70.4.5更新内容
- 70.3.5更新内容
- 60.15.5更新内容
- 60.13.2更新内容
- 60.12.5更新内容
- 60.11.6更新内容
- 60.10.5更新内容
- 60.8.1更新内容
- 修订记录
-
Mac SDK
- 概述
- 快速入门
- 典型场景
- 接口参考
- 通知参考
- 错误码参考
-
版本更新内容
- 100.10.7更新内容
- 100.10.6更新内容
- 100.10.5更新内容
- 100.9.7更新内容
- 100.9.5更新内容
- 100.7.13更新内容
- 100.7.8更新内容
- 100.7.6更新内容
- 100.7.5更新内容
- 100.5.5更新内容
- 100.3.6更新内容
- 90.12.7更新内容
- 90.12.5更新内容
- 90.9.5更新内容
- 90.7.5更新内容
- 90.6.5更新内容
- 80.15.21更新内容
- 80.15.5更新内容
- 80.13.6更新内容
- 80.13.5更新内容
- 80.12.7更新内容
- 80.12.6更新内容
- 80.12.5更新内容
- 80.10.5更新内容
- 80.9.5更新内容
- 80.8.5更新内容
- 80.7.5更新内容
- 80.5.11更新内容
- 80.5.5更新内容
- 70.16.5更新内容
- 70.14.5更新内容
- 70.13.5更新内容
- 70.12.6更新内容
- 70.12.4更新内容
- 70.11.5更新内容
- 70.10.5更新内容
- 70.9.5更新内容
- 70.8.6更新内容
- 70.8.5更新内容
- 70.7.5更新内容
- 70.6.5更新内容
- 70.5.8更新内容
- 70.4.5更新内容
- 70.3.5更新内容
- 60.15.5更新内容
- 60.13.2更新内容
- 60.12.5更新内容
- 修订记录
-
Electron SDK
- 概述
- 快速入门
- 典型场景
- 接口参考
- 错误码
- 其他说明
-
版本更新内容
- 100.10.7更新内容
- 100.10.6更新内容
- 100.10.5更新内容
- 100.9.7更新内容
- 100.9.5更新内容
- 100.7.13更新内容
- 100.7.8更新内容
- 100.7.6更新内容
- 100.7.5更新内容
- 100.5.5更新内容
- 100.3.7更新内容
- 100.3.6更新内容
- 90.12.7更新内容
- 90.12.5更新内容
- 90.10.8更新内容
- 90.10.5更新内容
- 90.9.5更新内容
- 90.7.5更新内容
- 90.6.5更新内容
- 80.15.21更新内容
- 80.15.5更新内容
- 80.13.6更新内容
- 80.13.5更新内容
- 80.12.7更新内容
- 80.12.6更新内容
- 80.12.5更新内容
- 80.10.5更新内容
- 80.9.5更新内容
- 80.8.5更新内容
- 80.7.5更新内容
- 80.5.11更新内容
- 80.5.5更新内容
- 修订记录
- SDK已知安全漏洞修复说明
-
常见问题
- 华为云会议资源类型
- 如何获取SDK的日志
- Android SDK
- iOS SDK
- Windows SDK
-
Electron SDK
- 运行Electron demo时遇electron failed to install correctly的错误提示
- mac平台环境安装时遇permission denied的错误提示
- mac平台编译.node文件时遇no template named 'remove_cv_t'的错误提示
- windows平台编译.node文件时遇Could not find any Python installation to use的错误提示
- windows平台编译.node文件时遇Could not find any Visual Studio installation to use的错误提示
- mac平台集成ElectronSDK后,运行报错需要arm64架构的错误提示
- mac平台集成ElectronSDK后,本地编译启动后应用能正常入会,但是打包后应用出现入会闪退问题
- windows平台集成ElectronSDK后启动失败,报错HwmUisdk.node is not a valid Win32 application
- windows平台集成ElectronSDK后启动失败,报错The specified module could not be found
- 专有名词解释
- 终端Scheme应用集成
- 最佳实践
-
常见问题
- 产品规格
- 资源订购
- 账号密码
-
会议操作
- 华为云会议与华为云WeLink是互通的吗?
- 主持人密码和来宾密码有什么用处?
- 如何查看会议中的终端网络状况?
- 会控Web页面中信号(网络质量)分别代表什么?
- 会控中的锁定会议功能是什么?
- 匿名接入(免账号入会)是什么意思?
- 电话(手机/固话)入会是什么功能?
- 如何修改或取消预订会议?
- 多个人都用主持人密码入会时,谁是主持人?
- 跨企业如何开会?
- 接入号的使用场景是什么?
- 固定电话无法加入云会议,提示一段忙音,该如何解决?
- Web端会控界面无法显示未入会设备的在线/离线状态?
- 会议中进行网络切换是否会导致会议中断?
- 如何修改会议名称?
- 如何在会中邀请参会人?
- 为什么呼叫联系人参会,对方手机收不到?
- 如何修改华为云会议界面语言?
- 会议录制
-
客户端业务使用
- 客户端登录提示失败?
- 客户端日志如何获取?
- 手机使用“华为云会议”客户端入会一分钟消耗多少流量?
- 客户端如何切换摄像头?
- 安装Windows客户端,提示“The setup files are corrupted. Please obtain a new copy of the program”?
- 安装PC客户端,360弹出提示“有未知程序正准备运行,建议阻止”?
- Win10系统安装“华为云会议”,弹出提示“Windows Defender SmartScreen已阻止启动一个未识别的应用”?
- 客户端如何设置多画面?
- 使用华为云会议客户端开会时是否可以设置主持人轮询?
- 客户端会场在网络质量较差时出现画面卡顿,网络恢复后画面仍不恢复的情况,如何处理?
- 移动端在后台运行时能否被唤醒入会?
- PC客户端如何在会议中设置摄像头?
- 网络连接失败时,怎么快速定位?
- 因显卡驱动兼容问题导致软终端崩溃怎么办?
- 哪些客户端支持虚拟背景?
- Windows哪些设备支持会中设置虚拟背景?
- 如何配置企业SSO登录?
- 如何打开视频画面智能排序?
- 如何开启或关闭会中镜像效果?
- 如何获得更好的声音体验
- Mac电脑出现无法安装华为云会议应用怎么办?
- PAD最多可显示多少视频画面
- 哪些设备支持共享手机声音?
- 启动PC客户端时,提示“您的操作系统版本过低,继续运行存在安全风险,建议先升级系统或更新系统安全补丁”?
- 升级PC客户端时,提示“检测到您下载的安装包异常,是否继续安装”?
- 如何恢复与设置华为云会议Web端会中麦克风/摄像头/共享屏幕权限?
- 华为云会议桌面端如何检测音频设备?
- 会中如何使用悬浮窗显示?
- 华为云会议移动端如何设置音视频?
- 如何更换头像?
-
硬终端配置故障
- TE硬终端配置完成后,无法入会。如何排除问题?
- 如何排除ACS状态异常问题?
- 如何排除SIP未激活问题?
- 如何排除SIP反复掉线问题?
- 会议设备“激活失败”,无法接入会议?
- ACS已连接,SIP提示:对不起,暂时无法提供服务?
- 硬终端日志、诊断信息如何获取?
- 为什么TE10/20找不到激活界面?
- TE10/20终端通过网线和PC电脑直连,升级终端版本失败?
- 使用UpgMaster工具升级硬终端版本,提示网络异常,如何处理?
- CloudLink Board 使用激活码激活后,在线路状态显示“ACS已连接,SIP未使用”?
- CloudLink Board 正常激活后,创建会议提示“呼集失败”?
- CloudLink Board 注册激活时选择华为云,显示界面提示“无法启用”?
- 如何重置硬件终端激活码?
- 硬终端业务故障
- 硬终端网络故障
-
硬终端业务使用
- 如何获取硬件终端SN码及激活码?
- TE硬终端初次使用如何配置?
- TE硬终端Web界面的初始密码是什么?
- 忘记了硬终端Web界面的密码怎么办?
- 如何恢复出厂设置?
- 绑定硬终端时提示SN已存在怎么处理?
- 硬终端如何与华为云账号解绑?
- 带宽不足,如何降低硬终端视频质量?
- 硬终端怎么自定义会场名?
- 硬终端上如何设置组合画面?
- TE30/40/50/60如何通过遥控器保存企业地址本到本地?
- 会议中呼叫成了语音会议,如何让会议保持视频会议?
- 如何进行资料共享?
- 手机如何通过AirPresence连接TE10、TE20、TE30/40/50/60终端,进行数据共享?
- 硬终端上的EUA投影码(6位数字投影码),怎么设置永久不变?
- 华为CloudLink Board是否支持安装第三方APP?
- 硬终端如何设置多画面?
- 如何连接和使用TE50设备?
- 使用TE20开会时,如何把会议视频存储起来?
- 使用TE30创建会议后,PC客户端或移动客户端能否主动加入该会议?
- 硬终端的SN号被绑定在一个企业后,无法绑定到另一个企业?
- 如何导入TE授权文件?
- 华为云管理平台已添加了TE40硬终端,之后如何将其关联到华为云?
- 如何将TE30-C的分辨率由720P升级到1080P?
- 硬件终端IP地址变化,重新上线需要手动拉会,而且注册时间较长如何解决?
- 硬件终端会议中,如果新增移动端会场入会,入会的该移动端出现声音异常怎么解决?
- 硬终端会场开会时为什么无法设置会议录播?
- 主会场硬终端掉线,硬终端会控Web界面无法添加会场怎么解决?
- CloudLink Board 是否支持无线辅流工具AirPresence发送辅流?
- CloudLink Board 是否支持与TE10/20、TEX0终端进行双向协作?
- CloudLink Board 是否支持读取U盘上的数据?
- TE30/40/50/60如何使用Wi-Fi激活?
- TE30发起会议,只有声音没有图像?
- 硬件接入账号是什么?
- TE10/TE20如何进行网络测试?
- 音视频设备故障
- 视频帮助
- 通用参考
展开导读
链接复制成功!
快速入门
在将Electron SDK集成到第三方应用中前,请先按照“跑通Electron Demo”中的指导熟悉Electron客户端中集成华为云会议Electron SDK的基本流程。
将华为云会议Electron SDK集成到第三方的Electron客户端的步骤如下:
- 下载Electron SDK。
- 解压Electron SDK,得到如下目录及文件:
图1 SDK包目录结构
说明:
1. 如果是mac平台,必须在mac电脑上解压Electron SDK,否则会造成framework损坏,导致无法使用。
- 拷贝Electron SDK文件
说明:
1. 如果已经安装node,请先确定自己node版本是32位还是64位,可以执行cmd/shell命令查看node版本的位数,结果:x64为64位, ia32为32位。
$ node -p "process.arch"
2. 如果没有安装node,可到nodejs官网下载对应版本。
- 如果平台是windows,node版本是32位,执行步骤1中解压目录下的run_demo_win32.bat
- 如果平台是windows,node版本是64位,执行步骤1中解压目录下的run_demo_x64.bat
- 如果平台是mac,Intel芯片版,执行步骤1中解压目录下的run_demo_mac.sh
- 如果平台是mac,M系列芯片版,执行步骤1中解压目录下的run_demo_mac_arm64.sh
说明:
bat或sh脚本的作用:
- 编译ts接口,生成js和types文件。
- 将对应平台的的SDK文件拷贝到对应的目录下("sdk/win32"、"sdk/x64"、"sdk/mac")。
- 运行Demo。
- 复制js和types目录及其下的子目录和文件、根目录下面的package.json到项目的某个目录下(如果项目使用的是TypeScript,则复制ts目录及其下的子目录和文件)。
说明:
第三方应用需要调用的JavaScript接口都在js文件夹中,入口文件为js\index.js(如果项目使用的是TypeScript,入口文件为ts\index.ts)。
- 增加依赖
参考demo中package.json增加依赖。
1 2 3
"dependencies": { "electron": "^13.6.7" },
- 通过import方式,引用Electron sdk的接口文件所在目录,初始化UISDKService对象,同时设置node路径加载sdk
参考demo中的AppService.js/NotifyService.js代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
import UISDKService from 'hwmsdk-electron'; const os = window.require('os'); const platform = os.platform(); const arch = os.arch(); const path = window.require("path"); let instance = null; export default class ApiService { constructor() { if (!instance) { instance = this; // node路径请根据实际的路径传入UISDKService构造函数 let _path = (platform == 'darwin' ? './../sdk/mac/' : arch == 'x64' ? './../sdk/x64/' : './../sdk/win32/'); let nodePath = path.join(window.__dirname, (_path + "HwmUisdk.node")); console.log("ApiService nodePath", nodePath); this.uisdkService = new UISDKService(nodePath); } return instance; } }
- 接口调用
华为云会议的接口调用和消息通知的处理时序请参考“典型场景接口调用概览”。
第三方应用可以调用的JavaScript接口都在js/api/中,可以参考Demo中的AppService/ApiService.js,调用这些接口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
import UISDKService from 'hwmsdk-electron'; const os = window.require('os'); const platform = os.platform(); const arch = os.arch(); const path = window.require("path"); let instance = null; export default class ApiService { constructor() { if (!instance) { instance = this; // node路径请根据实际的路径传入UISDKService构造函数 let _path = (platform == 'darwin' ? './../sdk/mac/' : arch == 'x64' ? './../sdk/x64/' : './../sdk/win32/'); let nodePath = path.join(window.__dirname, (_path + "HwmUisdk.node")); console.log("ApiService nodePath", nodePath); this.uisdkService = new UISDKService(nodePath); } return instance; } init(initInfo) { console.log("init, in param = ", initInfo); let ret = this.uisdkService.init(initInfo); console.log("init, out data = ", ret); return ret; } }
- 订阅事件通知
订阅第三方可以收到的通知JavaScript接口也都在js/api/中,可以参考Demo中的AppService/NotifyService.js,订阅这些通知。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
import UISDKService from 'hwmsdk-electron'; const os = window.require('os'); const platform = os.platform(); const arch = os.arch(); const path = window.require("path"); export default class NotifyService { static setNotifyFunc() { let _path = (platform == 'darwin' ? './../sdk/mac/' : arch == 'x64' ? './../sdk/x64/' : './../sdk/win32/'); let nodePath = path.join(window.__dirname, (_path + "HwmUisdk.node")); console.log("NotifyService nodePath", nodePath); let uisdkService = new UISDKService(nodePath); uisdkService.getConfMgrApi().setOnConfListChangedCB(NotifyService.handleOnConfListChanged); } static handleOnConfListChanged(confListInfo) { console.log('OnConfListChanged', ', confListInfo = ', confListInfo); let _confListInfo = window.sessionStorage.getItem("confListInfo"); _confListInfo = _confListInfo ? JSON.parse(_confListInfo) : []; console.log("sessionStorage confList:", _confListInfo); let conflistNew = confListInfo.confListItem; let _data = JSON.stringify(conflistNew ? conflistNew : []); window.sessionStorage.setItem("confListInfo", _data); } }
- 使用Electron sdk提供的枚举(可选)
第三方可以直接使用Electron sdk提供的枚举定义,拷贝packages/hwmsdk-electron/js/Api/enum.js和packages/hwmsdk-electron/types/Api/enum.d.ts到项目的某个目录下,参考Demo中的packages/hwmsdk-electron-demo/src/Constants/typeOption.js,使用这些枚举定义。
1 2 3 4 5 6 7 8 9 10 11 12
import { MediaType } from "./enum"; export const MediaTypeOptions = [ { value: MediaType.HWM_MEDIA_TYPE_AUDIO, label: "Audio", }, { value: MediaType.HWM_MEDIA_TYPE_VIDEO, label: "Video", } ];