Google Chrome浏览器未显示麦克风权限提示

问题描述 投票:5回答:1

我有一个Web应用程序,它通过getUserMedia将麦克风用于WebRTC。我目前有这个应用程序在多个子域上运行,例如test.example.comstaging.example.comproduction.example.com等。在大多数情况下,它都能正常工作。

在其中一个域(test)上,我无法使用麦克风。我的代码使用回调函数调用getUserMedia,但从未执行该回调函数,也从未显示浏览器的权限提示。

我还使用开发人员工具控制台使用新的基于Promise的API复制了此行为:

navigator.mediaDevices.getUserMedia({audio: true, video: false}).then(console.log).catch(console.log)

(是的,我知道它对thencatch做相同的事情,但是在这种情况下无关紧要。)

在工作站点(例如,stage)上,这是控制台中的结果:

Promise {<pending>}
MediaStream {id: "RANDOM_CHARS", active: true, onaddtrack: null, onremovetrack: null, onactive: null, …}

在非工作站点上,它仅显示Promise {<pending>},但thencatch都不记录任何内容,因为它从不解决任何问题。

我发现如果进入站点设置(chrome://settings/content/siteDetails?site=https%3A%2F%2Ftest.example.com)并将Microphone更改为Allow,那么我可以刷新页面,并且该页面可以正常工作。如果我将其更改回Ask,则会再次得到相同的行为-它不会询问。

关于我测试过的any网站和any权限,这种行为是正确的-不需要Allow ed权限改回Ask。但是,在这个特定的test网站上,我从未尝试过使用它,因此没有理由将其设置为Allow然后又返回Ask以触发该行为。

在所有这些情况下,navigator.permissions.query({name: "microphone"}).then(console.log)均按预期返回PermissionStatus {state: "prompt", onchange: null}

如何让Chrome重新提示输入麦克风权限?

google-chrome permissions webrtc getusermedia
1个回答
0
投票

如果Chrome在系统设置中根本没有麦克风权限,就会发生此问题。给它授予麦克风权限,然后它将开始询问是否授予网站麦克风权限。

© www.soinside.com 2019 - 2024. All rights reserved.