WKWebView getUserMedia({audio: true})没有提示

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

MacOS 上的 JavaScript 库实现 (Twilio Voice JS) 需要媒体权限,特别是麦克风权限。

要在网络浏览器中执行此操作,一个典型的调用是:

navigator.mediaDevices.getUserMedia({audio: true})
    .then((e) => alert("Permissions granted"))
    .catch((e) => alert("Permissions Denied"))

可以通过 evaluateJavaScript 或从本地资源加载 脚本(或 html 文件)在 WKWebView 中完成同样的操作。 在这些情况下,navigator.mediaDevices

仅在从“安全”站点(即 https)调用或本地加载时才可用。通过捆绑资源中的 html 文件。 
查看安全说明

问题很简单: 通过 Safari WKWebView 检查器控制台调用

getUserMedia

在终端中挂起。它没有完成。它不显示提示。 Promise 不会解决、拒绝或抛出错误,什么都没有。


背景


环境:

Flutter MacOS 插件,XCode 14.2。使用 Headless WKWebView 面向 macOS +11.0。

媒体和支持文档 电流输出

enumeratedDevices

getUserMedia

WKWebView
的当前输出:

预期产量 Safari 输出,在请求权限之前和之后显示

enumeratedDevices

问题非常简单:通过 enter image description hereSafari WKWebView 检查器控制台调用

getUserMedia

在终端中挂起。它没有完成。它不显示提示。 Promise 不会解决、拒绝或抛出错误,什么都没有。


问题

是什么导致了这种悬挂/我错过了什么?

MCVE

Github:

WKWebView

javascript flutter macos audio getusermedia
© www.soinside.com 2019 - 2024. All rights reserved.