跨平台应用开发进阶 (三十):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】。文章转载请联系作者。








评论