你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

说话参与者未授予麦克风权限

当说话参与者未授予麦克风权限时,可能会导致通话中出现单向音频问题。 如果用户在浏览器级别拒绝相关权限或未在操作系统级别授予访问权限,则会出现此问题。

如何使用 SDK 进行检测

当应用程序请求麦克风权限但权限被拒绝时,DeviceManager.askDevicePermission API 返回 { audio: false }

若要检测此权限问题,应用程序可以通过面向用户的诊断 API 注册侦听器回调。 侦听器应检查是否有值为 microphonePermissionDenied 的事件。

请务必注意,如果用户在通话期间撤销了访问权限,也会触发此 microphonePermissionDenied 事件。

如何缓解或解决

应用程序应始终在初始化 CallClient 后调用 askDevicePermission API。 这样用户就有机会在之前未授予权限或权限状态为 prompt 的情况下授予设备权限。 如果用户拒绝了该权限,应用程序还可显示一条警告消息,使用户可在加入通话之前对其进行修复。

侦听 microphonePermissionDenied UFD 事件也很重要。 如果用户在通话期间撤消权限,则显示警告消息。 这样做使用户能够察觉问题,从而相应调整其浏览器或系统设置。

参考

疑难解答流程

如果用户在通话期间无法听到声音,一种可能性是发言的参与者未授予麦克风权限。 如果发言的参与者正在使用你的应用程序,可按照此流程图来排查问题。

排查权限问题的关系图。

  1. 检查发言的参与者是否有 microphonePermissionDenied 错误 UFD 事件。 这通常表示用户已拒绝该权限或未请求该权限。
  2. 如果发生 microphonePermissionDenied 错误 UFD 事件,请验证应用是否已调用 askDevicePermission API。
  3. 如果用户加入通话之前尚未调用 askDevicePermission,则应用必须调用此 API。 应用可通过确定权限的当前状态来提供更流畅的用户体验。 例如,它可显示一条消息,指示用户在必要时调整其权限。
  4. 如果应用已调用 askDevicePermission API,但用户仍收到 microphonePermissionDenied 错误 UFD 事件。 用户必须在浏览器中重置或授予麦克风权限。 如果他们已确认在浏览器中授予了该权限,则应检查 OS 是否阻止了对浏览器的麦克风访问。
  5. 如果没有 microphonePermissionDenied 错误 UFD,我们需要考虑其他可能性。 对于发言的参与者,传出音频问题可能存在其他潜在原因,例如网络重新连接或设备问题。
  6. 如果存在 networkReconnect 错误的 UFD,传出音频可能会因为网络断开而暂时丢失。 请参阅通话中存在网络问题,了解详细信息。
  7. 如果未发生 networkReconnect 错误 UFD,则发言的参与者的麦克风可能存在问题。 有关详细信息,请参阅发言的参与者的麦克风有问题