首页 > 解决方案 > 将 WebRTC getUserMedia 与 UWP WebView 一起使用的问题

问题描述

我创建了一个基本的 UWP 应用程序,带有WebView. 我正在导航到这个 URL:https ://webrtc.github.io/samples/src/content/getusermedia/gum/来测试getUserMedia().

我得到的错误是:

获取用户媒体错误:NotFoundError

我还添加了 Capabilities Webcam 功能,为您的应用启用相机设备。但没有运气。

有谁知道这是否应该是可能的,如果我做错了什么?有人getUserMedia在 UWP中使用WebView吗?

标签: javascriptuwpwin-universal-appwebrtcwinjs

解决方案


您需要PermissionRequestPermissionRequested事件处理程序中允许。

除了处理 PermissionRequested 事件的应用程序之外,用户还必须为请求位置或媒体功能的应用程序批准标准系统对话框,以便启用这些功能

MyWebView.PermissionRequested += MyWebView_PermissionRequested;

private void MyWebView_PermissionRequested(WebView sender, WebViewPermissionRequestedEventArgs args)
{
    if (args.PermissionRequest.PermissionType == WebViewPermissionType.Media)
    {
        args.PermissionRequest.Allow();
    }
}

更新 WinJS 应用程序,您可以参考此文档

document.getElementById('live-preview').addEventListener("MSWebViewPermissionRequested", permissionRequestedEventArgs => {
    const permissionRequest = permissionRequestedEventArgs.permissionRequest;
    switch (permissionRequest.type) {
        case "geolocation":
        case "media":
            permissionRequest.allow();
            break;
        case "pointerlock":
        case "webnotifications":
        case "screen":
        case "immersiveview":
        case "unlimitedIndexedDBQuota":
        default:
            permissionRequest.deny();
            break;
    }
});

推荐阅读