前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于mac electron设备权限申请的方法

关于mac electron设备权限申请的方法

原创
作者头像
黑眼圈云豆
发布2020-09-18 14:41:54
6.7K1
发布2020-09-18 14:41:54
举报

问题描述

关于刚接触electron开发的前端来说,肯定会碰到这个问题,在electron代码跑到了要使用摄像头权限或者麦克风权限的时候,程序突然就崩溃了。如下图所示。

这是由于mac的机制问题,当应用要去调用设备但是没有设备的使用权限时,就会崩溃掉。那么我们如何来解决这种问题呢?

解决方案

方案一:使用终端去运行

我的项目是用vscode去编写的,使用的终端也是vscode自带的,所以vscode没有设备使用权限的话,从vscode运行起来的项目也是没有权限的,那么我们可以用mac自己的终端去运行,终端是有设备使用权限的。

查看权限的步骤如下:

系统偏好设置
系统偏好设置
安全性与隐私
安全性与隐私
查看权限是否钩上
查看权限是否钩上

只要终端的设备权限有勾选上,从终端运行项目时,就可以正常使用了。

方案二(推荐):配置plist文件

方案一只能解决dev环境的问题,如果是碰到了打包之后的应用程序无法使用设备权限的话,方案一行不通。

plist文件是mac项目用来配置系统环境的一个文件,electron也可以用这个文件进行配置。

步骤如下:

1. 在项目根目录下创建一个entitlements.mac.plist文件,并写入下面的代码;

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.security.cs.allow-jit</key>
    <true/>
    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
    <key>com.apple.security.cs.allow-dyld-environment-variables</key>
    <true/>
    <key>com.apple.security.device.audio-input</key>
    <true/>
    <key>com.apple.security.device.camera</key>
    <true/>
  </dict>
</plist>
entitlements.mac.plist
entitlements.mac.plist

2. 在package.json中配置plist。

代码语言:javascript
复制
"entitlements": "entitlements.mac.plist",
"hardenedRuntime": true,
"extendInfo": {
    "NSMicrophoneUsageDescription": "请允许本程序访问您的麦克风",
    "NSCameraUsageDescription": "请允许本程序访问您的摄像头"
},
package.json
package.json

配置好了之后打包出来的应用程序,在运行到设备申请使用的地方时,就会出现弹出请求设备的权限。

缺陷:目前这个方法还有个不足的地方就是在dev环境下,没有去请求麦克风的权限,导致dev还是需要依靠终端去运行,还没有找到能解决的方案,如果有大佬知道怎么解决,欢迎在评论区留言。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述
  • 解决方案
    • 方案一:使用终端去运行
      • 方案二(推荐):配置plist文件
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档