让我们说我在浏览器中使用getUserMedia javascript api。浏览器要求用户允许使用相机或麦克风。
如何检测浏览器何时要求这些权限,以便我可以向用户解释该应用为何要求获得许可?
答案 0 :(得分:1)
据我所知,这不是直接可行的,但是你应该可以推断用户正在看到提示。
据推测,由于您正在编写javascript,因此您决定何时打电话给getUserMedia()
,因此您可以提供其他说明,作为导致此问题的过程的一部分。一个精心设计的页面应该能够很好地解释发生了什么,以便用户知道之前发生了什么,他们会提示他们将网络摄像头的控制权交给他们。
也就是说,您可以推断用户在您发送请求时看到了权限提示,但未收到错误回调或成功回调。鉴于此,您可以在第一次提示获取权限的同时设置计时器,如果没有成功或错误返回几秒钟就会触发,在这种情况下,您可以合理地假设已向用户显示浏览器提示但尚未回复。
答案 1 :(得分:0)
这是本机UI功能,不会向JavaScript公开,因此无法检测对话框何时出现。但是,所有支持getUserMedia的浏览器都会请求权限,因此,如果您检测到getUserMedia API的支持,那么您可以在那时显示您的解释,而其他浏览器上的用户则看不到它。
答案 2 :(得分:0)
从Chrome 64开始,您可以使用Permissions API查询是否已授予camera
和microphone
权限:
navigator.permissions.query({name:'camera'}).then(function(result) {
alert(result.state);
if (result.state === 'granted') {
//permission has already been granted, no prompt is shown
} else if (result.state === 'prompt') {
//there's no peristent permission registered, will be showing the prompt
} else if (result.state === 'denied') {
//permission has been denied
}
});
以上内容仅适用于Chrome atm。
我在{@ Using the Permissions API to Detect How Often Users Allow or Deny Camera Access