在初始拒绝后使用getUserMedia()重新获取权限

在被拒绝一次之后,我们如何使用getUserMedia()来请求摄像头/麦克风访问?

我正在使用getUserMedia访问用户的相机并将数据传输到canvas。 这一切工作正常。

在testing中,我曾遭到否认。 在Chrome和Firefox的这一点上,任何随后的getUserMedia()请求都会默认为拒绝状态。

我们显然不希望在被拒绝之后在每个页面加载请求摄像头/麦克风的权限,从而使我们的用户感到懊恼。 这已经足够地理定位api烦人了。

但是,必须有一种方法来再次请求它。 仅仅因为用户遭到拒绝,并不意味着他们想要一直拒绝摄像头访问。

我一直在阅读规范和search一下,但我没有find任何明确的问题。

编辑:进一步的研究,似乎在Chrome浏览器中击中拒绝将当前网站添加到阻止列表。 这可以通过chrome:// settings / content手动访问。 滚动到媒体。 pipe理例外情况,删除阻止的网站。

链接到Chrome://设置/内容不起作用(如果我们想添加一个有用的链接让人们重新启用权限)。

整个用于处理getUserMedia的权限的用户体验很糟糕。 =(

使用HTTPS。 当用户授予一次权限时,会被记住,Chrome不会再次请求该页面的权限,您可以立即访问媒体。 这不会为您提供一种强制用户权限栏的方法,但至less可以确保在用户授予权限后不必再询问权限。

如果您的应用程序从SSL(https://)运行,则此权限将保持不变。 也就是说,用户不必每次都授予/拒绝访问权限。

请参阅: http : //www.html5rocks.com/en/tutorials/getusermedia/intro/

jeffreyveon的答案将有助于减less用户select拒绝的机会,因为她只需要select一次。

如果她点击拒绝,您可以提供一条消息,解释您为什么需要该权限以及如何更新她的select。 例如:

 navigator.getUserMedia ( // constraints { video: true, audio: true }, // successCallback function(localMediaStream) { var video = document.querySelector('video'); video.src = window.URL.createObjectURL(localMediaStream); video.onloadedmetadata = function(e) { // Do something with the video here. }; }, // errorCallback function(err) { if(err === PERMISSION_DENIED) { // Explain why you need permission and how to update the permission setting } } ); 

看起来像今天早上亮起来的东西。 从46.0.2490.71版本开始,Chrome不再要求我持久地从本地主机获取权限。

请注意以下几点。

1. Localhost: In Localhost Chrome Browser asking permission only one time and Firefox every pageload.

2. HTTPS: Both Browsers Chrome and Firefox asking permission only one time.

Interesting Posts