getUserMedia()允许用户在权限被拒绝的情况下继续



我的示例getUserMedia((请求相机和麦克风的权限。

let constraints = { audio: true, video: true };
navigator.mediaDevices.getUserMedia(constraints).then(stream => {
// Do stuff
}).catch(e => alert(`getUserMedia error ${e.name}`))

如果用户不接受摄像头和/或麦克风权限请求,我会收到预期的警报错误。

是否仍然可以要求提供音频和视频,但如果用户拒绝,那么他们的设备将不会被使用,但仍然允许用户浏览网站?

谢谢。

如果您希望您的代码在任何一种情况下都能运行,那么您必须以某种方式拆分并重新排列代码,以便运行它。

如果用户接受流,则使用doStuffWithStream,如果不接受,则调用doStuffWithoutStream

如果在这两种情况下都需要发生某些事情,那么您可以使用finally方法在这两个情况下运行代码。

function doStuffWithStream(stream) {
// Do stuff with stream.
}
function doStuffWithoutStream() {
// Do stuff without stream.
}
function doStuffEitherWay() {
// Do stuff in both cases.
}
let constraints = { audio: true, video: true };
navigator.mediaDevices.getUserMedia(constraints).then(stream => {
doStuffWithStream(stream);
}).catch(e => {
alert(`getUserMedia error ${e.name}`);
doStuffWithoutStream();
}).finally(() => {
doStuffEitherWay();
});

最新更新