【发布时间】:2019-04-08 14:04:03
【问题描述】:
我正在尝试在 getUserMedia 的帮助下访问 iOS Safari 上的麦克风。您可以在下面找到我的代码的 sn-p。
if (navigator.mediaDevices === undefined) {
navigator.mediaDevices = {};
}
if (navigator.mediaDevices.getUserMedia === undefined) {
navigator.mediaDevices.getUserMedia = function(constraints) {
// First get ahold of the legacy getUserMedia, if present
let getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
// Some browsers just don't implement it - return a rejected promise with an error
// to keep a consistent interface
if (!getUserMedia) {
return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
}
// Otherwise, wrap the call to the old navigator.getUserMedia with a Promise
return new Promise(function(resolve, reject) {
getUserMedia.call(navigator, constraints, resolve, reject);
});
}
}
navigator.mediaDevices.getUserMedia({
audio: true
}).then(function(stream) {
successCallBack(.......);
}).catch(function(error) {
debug.log(error);
..........
});
然而,promise 总是会捕获一个错误,更具体地说是 OverConstraintError。
{message: "Invalid constraint", constraint: ""}
这种行为对于 iOS Safari 来说是独一无二的,在所有其他浏览器(Chrome、Firefox、Safari osX)上它都可以正常工作。实际上我的问题很像这个=> How to resolve iOS 11 Safari getUserMedia "Invalid constraint" issue,但我并没有尝试使用相机。我唯一感兴趣的是麦克风。
我正在使用真正的 iPhone(5 和 X,都更新到最新版本)进行测试,因此它没有链接到 iPhone 模拟器。
授予了对麦克风的访问权限,并且还显示了请求权限的弹出窗口,因此这不是权限问题。
【问题讨论】:
-
您在使用隐私浏览吗?某些功能(例如本地存储)在隐私浏览中受到限制。如果使用
UIWebView而不是WKWebView,则其他功能不可用。 -
我应该在我的帖子中提到它,但我没有测试隐私浏览。确实,我已经注意到有些东西在隐私浏览中是不可用的。
-
解决了吗?
-
@TowkirAhmet,不,还没有解决。
标签: javascript ios safari