一旦被拒绝,我们如何使用getUserMedia()请求摄像头/麦克风访问?
我正在使用getUserMedia访问用户的摄像头并将数据传输到画布.这一切都很好.
在测试中,我打了一次否认.此时在Chrome和Firefox中,任何带有getUserMedia()的后续请求都默认为拒绝状态.
我们显然不希望通过在拒绝后的每个页面加载上请求相机/麦克风的权限来惹恼我们的用户.对地理位置api来说已经足够烦人了.
但是,必须有一种方法再次请求它.仅仅因为用户点击拒绝一次并不意味着他们想要一直拒绝网络摄像头访问.
我一直在阅读有关规范和谷歌搜索一段时间,但我没有找到任何明确的问题.
编辑:进一步研究,似乎在Chrome中点击Deny会将当前网站添加到阻止列表中.这可以通过chrome:// settings/content手动访问.滚动到媒体.管理例外,删除被阻止的网站.
链接到chrome:// settings/content不起作用(在我们想要添加有用链接以让人们重新启用权限的情况下).
用于处理getUserMedia周围权限的整个UX很糟糕.=(
如果用户第一次拒绝,我想重新提示相机许可。
代码:
navigator.mediaDevices.getUserMedia({video: true, audio: false}).then(function(){
document.getElementById("submitbutton").style.display="inline";
}).catch(function(err){alert("Please provide consent.");location.reload();});
Run Code Online (Sandbox Code Playgroud)
上面的代码在我第一次拒绝权限后重新加载页面。但重新加载后,它不会提示许可,而是再次进入 .catch 块
我相信发生这种情况是因为浏览器第一次存储被拒绝的承诺,并在页面重新加载时检查相同的承诺。
有什么办法可以强制再次出现权限提示吗?