我编写了一个脚本,让我们网站的访问者可以录制音频并将文件保存到我们的服务器上。
一切都很完美,直到我发现,如果用户没有授权但仍然按下录制按钮,脚本会崩溃。因此我添加了以下内容以确保已经获得授权:
navigator.permissions.query({name:'microphone'}).then(function(result) {
if (result.state == 'granted') {
//GRANTED
} else if (result.state == 'denied') {
//DENIED
}
});
很遗憾,这种方法无法在iOS Safari上使用,因此在这种情况下会再次导致崩溃。我找到了一些关于这个问题的讨论,但是在iOS上没有一个解决方案。但肯定有一个解决方案,对吧?如果我们不能确定已经被授权,而在麦克风访问被拒绝的情况下进行录音也会导致崩溃,那么我们应该如何在iPhone上记录音频呢?
希望有人能想到一个办法。提前致谢。 丹尼尔
navigator.permissions.query({name:'WHATEVER'})
在Safari中不受支持,因此我能够通过测试userAgent并使用该浏览器支持的另一个对象来避免OP提到的崩溃:在我的情况下是navigator.geolocation
,对于他的情况navigator.mediaDevices
可能有所帮助(请注意,问题提到了**替代navigator.permissions.query
**的方法)。 - CPHPython.permissions
的使用。如果Safari不支持与麦克风相关对象的其他用途,那么这是浏览器的问题,我只是提供了一个“permissions.query
替代方案”的解决方案。你试过mediaDevices吗? - CPHPython