跨平台应用开发进阶 (三十):uni-app 实现集成火山视频直播服务
一、前言
项目开发进程中,业务提出新需求,需要接入视频直播。为此,开始接触火山引擎视频直播。火山引擎方值负责提供观播 SDK,综合考虑现有技术栈,采用集成Web SDK
方式,接入观播功能。直播通过企业版腾讯会议方式进行推流操作。
二、技术实现
前端采用 uni-app Webview
嵌套H5
页面方式,重点处理逻辑集中在H5
观播页面中,因为涉及观播activityId
值的获取,故需要实现Webview
与H5
页面双向通信机制。
uni-app 在 App 平台同时支持网络网页和本地网页,但本地网页及相关资源(js
、css
等文件)必须放在 uni-app 项目根目录->hybrid->html
文件夹下或者 static
目录下,因为这个目录下的文件不会被编译。
注意⚠️:Web SDK
以本地网页嵌套集成火山视频方式,目前不支持预告片播放及直播回放功能,故需要将视频直播H5
作为一个独立H5
应用进行部署。
补充知识点⚠️:每个vue
页面,其实都是一个webview
,而vue
页面里的web-view
组件,其实是webview
里的一个子webview
。这个子webview
被append
到父webview
上。
vue
页面内容如下:
html 页面内容如下:
有关参数、回调函数等详细用法,详参接口文档。
2.1 web-view 组件在 app 中的窗体关系和 plus.webview 操作方式
uni-app
的vue
页面本身是一个webview
,vue
页面里的web-view
组件,其实是一个子webview
。但一个vue
页面不能放多个web-view
组件,这个组件默认是全屏的(不会覆盖原生头和原生导航)。
使用plus
代码获得当前webview
的对象后(参考此文https://ask.dcloud.net.cn/article/35036),再获取子webview
,其实也可以得到web-view
组件所对应的plus
的webview
对象,进而再使用plus.webview
的丰富api
。
获取子webview
时注意时机,获取方法执行太早可能获取不到。
三、双向通信
3.1 uni-app 与内嵌网页通信
uni-app 向内嵌网页发消息:
内嵌网页接收消息:
3.2 内嵌网页向 uni-app 发消息
在web-view
访问的网页内引入uni.webview.1.5.3.js
,待sdk
加载完毕后就可以调用方法postMessage
。如下:
uni-app 接收消息在web-view
存在的组件内写监听message
的方法。如下:
四、实现案例
内嵌 H5 网页代码:
uniapp 组件代码:
五、拓展阅读
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/f47ab522117839285ea92625a】。文章转载请联系作者。
评论