Cocos 2 使用 webview 嵌入页面,摄像头调用没权限问题

Cocos 2 使用 webview 嵌入页面,摄像头调用没权限问题

嗯,这么说呢,这篇博文看自己的实际需求哈,标题写的可能不是很准确。

我这边呢,是遇到这样一个功能,就是有一个服务,他是的页面呢,是打开电脑的摄像头,需要在cocos 程序里面呢,展示摄像头的实时画面。看上去挺简单哈,但是实际做起来,还是有点问题。

背景

另一项目组提供一个web服务,这个服务呢,是部署到后端服务器的web项目,最终提供一个页面的访问链接,这个访问链接呢,浏览器打开后,会自动打开电脑的摄像头采集画面。这个功能呢,需要在 cocos 中使用,也就是说需要在 cocos 中打开摄像头,实现相应的功能。

最开始我是这么想的, cocos 直接打开设备摄像头有点麻烦,所以我就打算直接使用 cocos 提供的组件 webview,直接把提供的 web 页面嵌入进来,这样子听起来就十分的简单了,OK,那就简单的试验一下。

cocos 使用 webview 嵌入页面

这个功能十分的简单,cocos 提供了 webview 组件,只需要设置一下 url 就可以了。

但是有一个问题需要注意一下,就是 cocos 啊,目前只是支持插入 url,不能使用本地的 html 文件,所以提供的 web 页面需要部署起来,我自己本地使用 nginx 部署了一下。

使用很简单,添加到页面一个 webview 组件,然后把 url 填写上:

好了,完成了,我们现在只需要打开页面运行一下就可以了!

看上面截图,摄像头画面打不开,控制台报错了,报的意思是没有授权!

所以说我们需要授权一下。

解决问题

解决很简单,只需要在嵌入网页的 iframe 标签中添加一下授权就可以:

html 复制代码
<iframe src="./wjw.html" frameborder="0" allow="microphone *;camera *;"></iframe>

主要就是加上 allow="microphone *;camera *;" 这段代码就可以了。

但是现在有这样一个问题,就是我们使用的是 webview 嵌套的网页,他是 cocos 提供的组件,他只能配置个 url,没有什么 iframe ,怎么办? 有办法!

首先我们给使用的 webview 关联一个 ts 文件,然后我们呢,打印一下这个 node:

ts 复制代码
    start() {
        console.log("WebViewFun start", this.node);
    }

我们看一下 node 里面有没有 iframe 这个标签!

看!找到啦!!!

后面就简单了,给他加上就可以了!加上之后,在把 url 赋值上去,还有,之前在组件配置的 url 就可以清空了,我们后边动态给赋值上去:

ts 复制代码
    start() {
        let iframeDom = this.node.getComponent(cc.WebView)["_impl"]["_iframe"];
        iframeDom.allow = 'microphone *;camera *'
        iframeDom.src = "http://127.0.0.1/"
    }

好了,我们看一下效果:

诶,画面出来了!完成!!

相关推荐
游戏开发爱好者814 小时前
APP上架苹果应用商店经验教训与注意事项
android·ios·小程序·https·uni-app·iphone·webview
2501_9160074717 小时前
苹果应用商店上架的系统逻辑,从产品开发到使用 开心上架 上架IPA 交付审核流程
android·ios·小程序·https·uni-app·iphone·webview
2501_9160088919 小时前
uni-app 上架到 App Store 的项目流程,构建、打包与使用开心上架(Appuploader)上传
android·ios·小程序·https·uni-app·iphone·webview
2501_9159184119 小时前
iOS 开发者工具全景指南,构建高效开发、调试与性能优化的多工具工作体系
android·ios·性能优化·小程序·uni-app·iphone·webview
游戏开发爱好者82 天前
iOS 应用上架的工程实践复盘,从构建交付到审核通过的全流程拆解
android·ios·小程序·https·uni-app·iphone·webview
沟通QQ:688238862 天前
六轴机械臂避障运动全记录:从路径搜索到运动控制
webview
weixin_462446233 天前
自动安装 MariaDB 二进制版,并配置为与 MySQL 共存
mysql·mariadb·webview
7***n755 天前
C++在游戏中的Cocos2d-x
游戏·游戏引擎·cocos2d
2501_915106325 天前
iOS App 测试工具全景分析,构建从开发调试到线上监控的多阶段工具链体系
android·测试工具·ios·小程序·uni-app·iphone·webview
Marvin_Kai6 天前
Cocos Creator 3.x 实现“粒子特效” 的 点击触发
cocos2d