JS获取用户设备权限

1,108 阅读1分钟

最近在做web的语音输入功能,在获取用户设备权限时遇到一些问题,记录总结一下!

问题1:本地开发时navigator.mediaDevices可以获取到,但是发布到测试环境navigator.mediaDevices()是undefined;

原因:通过 navigator.mediaDevices.getUserMedia() 获取用户多媒体权限时,需要注意其只工作于以下三种环境:

  • localhost 域开启了
  • HTTPS 的域 使用
  • file:/// 协议打开的本地文件

我们公司的测试环境是http域的所以获取不到,如果想在http域使用需要修改chrome配置:

chrome://flags/#unsafely-treat-insecure-origin-as-secure,将该 flag 切换成 enable 状态;在输入框中填写需要开启的域名或地址,如果有多个,则以逗号分隔;重启浏览器后生效。

问题2:iframe页面navigator.mediaDevices.getUserMedia(),提示:Media access NotAllowedError: Permission denied;

原因:在react中的iframe页中调用摄像头和麦克风需要配置权限;

解决: let iframe = windoe.document.getElementById("mainIframe") iframe.allow="microphone;camera;midi;encrypted-media;"

遇到的2个小问题,希望可以帮助到和我遇到一样问题的小伙伴!