PermissionStatus API:Safari 似乎支持更改事件,但当用户允许麦克风时不会触发任何内容

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

当显示本机对话框时,我们希望对用户关于允许或不允许应用程序访问设备麦克风的选择做出反应。

也就是说,

  • 如果他|她点击[允许],就做某事
  • 如果他|她点击[不允许],就做另一件事

根据 caniuse Safari 似乎从 v16.4 开始就支持此功能。

然而,从 v17.6 开始,当用户单击/触摸任何按钮时,即使一切似乎都已正确设置,并且回调函数成功附加了

.addEventListener
.onchange

,也不会发生任何事情。

请注意,相同的代码在 Windows 和 Android 上运行良好,没有任何问题。

permissions speech-recognition microphone user-permissions getusermedia
1个回答
0
投票

有两种方法可以触发本机对话框来请求读取麦克风输入的权限。

  1. 开始语音识别会话
  2. 启动 getUserMedia 会话,以便应用程序准备好录制音频

无论哪种方式,您都可以读取并保存初始权限状态,然后启动

setInterval(checkFunction,500);
来读取后一个状态,并使用
if(previous==current)
if(previous!=current)
之类的逻辑来比较它们,然后在更改后立即使用
clearInterval()
被检测到并最终编写代码以优雅地响应用户的选择以提供最佳的用户体验。

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