electron 下网页获取 micphone 权限

简介: electron 下网页获取 micphone 权限

网页获取麦克风或摄像头权限我们只需调用 navigator.mediaDevices.getUserMedia 方法就可唤起浏览器用户授权

const useMicphone = async () => {
  try{
    let mediaStream = await navigator.mediaDevices.getUserMedia({ audio: true });
    if (mediaStream) {
      console.log('获取 micphone 成功')
    }
  }catch(e){  
    console.warn('获取 micphone 失败')
  }
};

但在 electron 内可能不起作用

我们用 electron 来包裹网页本意大多就是为了方便获取更多的操作权限

如果获取失败的话可尝试在 electron 内提前让用户权限可在 electron 提供的 api 内在用户打开软件时提前授权

在创建窗体后,加载网页前调用 systemPreferences.getMediaAccessStatus 授权:

import { app, systemPreferences } from "electron";
// 权限授权
async function checkMediaAccess(mediaType: 'microphone' | 'camera' | 'screen'){
  const result = systemPreferences.getMediaAccessStatus(mediaType)
  if(result !== "granted"){
    await systemPreferences.askForMediaAccess('microphone')
  }
}
// 创建主窗体
async function createMainWindow() {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true,
      preload: path.join(__dirname, "preload.js"),
      webSecurity: false,
    },
  });
  // 此处调用并授权
  await checkMediaAccess('microphone')
  if (isDev) {
    win.loadURL(VITE_DEV_SERVER_URL);
    win.webContents.openDevTools();
  } else {
    win.loadFile('dist/index.html')
  }
  return win;
}

如果获取 micphone 或者摄像头是在 electron 网页内再嵌入的 iframe 内则还需要在 iframe 上加上 allow 属性:

// 允许地理信息,麦克风,摄像头.. 等权限
<iframe allow="geolocation; microphone; camera; midi; encrypted-media;" src="http://helloworld.com" style="min-width: 100%; height: 100%; width: 100%;"></iframe>


相关文章
|
6月前
|
Shell
5.Electron之shell(使用系统默认浏览器打开网页)
5.Electron之shell(使用系统默认浏览器打开网页)
111 1
|
7月前
|
Web App开发 编解码 前端开发
electron+vue网页直接播放RTSP视频流?
目前大部分摄像头都支持RTSP协议,但是在浏览器限制,最新版的浏览器都不能直接播放RTSP协议,Electron 桌面应用是基于 Chromium 内核的,所以也不能直接播放RTSP,但是我们又有这个需求怎么办呢?
335 18
|
前端开发 JavaScript
开源项目推荐:Electron,使用网页编程的方式构建跨平台的桌面应用
开源项目推荐:Electron,使用网页编程的方式构建跨平台的桌面应用
781 0
|
1月前
|
JSON JavaScript 前端开发
开发桌面程序-Electron入门
【10月更文挑战第16天】Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用的框架,嵌入了 Chromium 和 Node.js。本文介绍了如何搭建 Electron 开发环境,包括安装 Node.js、创建项目、配置 main.js 和打包应用。通过简单的步骤,你可以快速创建并运行一个基本的 Electron 应用程序。
开发桌面程序-Electron入门
|
4月前
|
JavaScript 开发工具
Electron 开发过程中主进程的无法看到 console.log 输出怎么办
Electron 开发过程中主进程的无法看到 console.log 输出怎么办
|
5月前
|
前端开发
PC端01,桌面端,electron的开发,electron的开发的系列课程,软件开发必备流程,electron的讲解,electron的开发,vitepress博主的gitee链接,PC端效率软件
PC端01,桌面端,electron的开发,electron的开发的系列课程,软件开发必备流程,electron的讲解,electron的开发,vitepress博主的gitee链接,PC端效率软件
PC端01,桌面端,electron的开发,electron的开发的系列课程,软件开发必备流程,electron的讲解,electron的开发,vitepress博主的gitee链接,PC端效率软件
|
7月前
|
移动开发 开发框架 JavaScript
Vue3 Vite electron 开发桌面程序
Vue3 Vite electron 开发桌面程序
348 0
|
前端开发 算法 JavaScript
从零开始开发图床工具:使用 Gitee 和 Electron 实现上传、管理和分享(下)
从零开始开发图床工具:使用 Gitee 和 Electron 实现上传、管理和分享(下)
191 0
|
存储 Web App开发 JavaScript
从零开始开发图床工具:使用 Gitee 和 Electron 实现上传、管理和分享(上)
从零开始开发图床工具:使用 Gitee 和 Electron 实现上传、管理和分享(上)
248 0
|
Web App开发 资源调度 前端开发
基于NeteaseCloudMusicApi和electron-vue开发网易云音乐--electron-vue初始化
基于NeteaseCloudMusicApi和electron-vue开发网易云音乐--electron-vue初始化
144 0