electron 当我请求使用相机的权限时,电子应用程序崩溃,错误消息要求在com.apple.security.device.camera中输入字符串,它不应该是布尔值吗?

des4xlb0  于 2022-12-16  发布在  Electron
关注(0)|答案(1)|浏览(138)

我有一个电子应用程序,需要访问相机。在Windows上它工作正常,但在MacOS上它不,甚至崩溃时,我试图要求permisson。
当我调用这个例程来检查权限状态时(如下所示),它给出了一个未定的答案。

systemPreferences.getMediaAccessStatus('camera')

然后,为了请求权限(希望显示allow/deny弹出窗口),我使用以下命令:

const { systemPreferences } = require('electron')
systemPreferences.askForMediaAccess('camera')

但当我这样做时,它会立即崩溃应用程序,并给我一个很长的详细崩溃报告,其中包括:

This app has crashed because it attempted to access privacy-sensitive data without a usage description.
The app's Info.plist must contain an com.apple.security.device.camera key with a string value explaining to the user how the app uses this data.

此外,在应用安装的根目录中生成的Info.plist包含了所有需要的条目,我甚至将hardenedRuntime作为true包含在内。

<key>NSCameraUsageDescription</key>
<string>This app needs access to the Camera</string>
<key>com.apple.security.device.camera</key>
<true/>
<key>hardenedRuntime</key>
<true/>

最后一点...

  • 我在应用程序签名方面很纠结,最后终于在构建过程中使用了有效的证书进行签名。在此之前,当我请求权限时,应用程序并没有崩溃。它根本什么都没做。当我成功地对应用程序进行签名时,应用程序就开始崩溃了。
  • 我使用electron-builder来构建.dmg并从. npm run electron:build安装。当我通过npm run electron:serve在开发模式下运行应用程序时,它工作得很好,甚至没有弹出权限弹出窗口。访问状态返回为授权。
  • www.example.com不应该com.apple.security.device.camera是布尔型的吗?我读到的所有关于它的内容都是布尔型的。尽管错误消息要求我定义一个带有描述的字符串。(我已经尝试过了,没有做任何修改)

有什么解决办法吗?
我已经尝试过手动更改Info.plist。没有成功。我怎么才能确保我在正确的Info.plist文件上工作。有几个。我正在使用的是最大的一个,似乎是主要的一个。其他的是助手。
我也试着在MacOS系统首选项中管理权限,也没有成功。

mzaanser

mzaanser1#

尝试添加**“com.apple.security.cs.允许未签名的可执行内存”:真实**

mac: {
           ....
          extendInfo: {
            "NSCameraUsageDescription": "some description",
            "com.apple.security.device.camera": true,
            "com.apple.security.cs.allow-unsigned-executable-memory": true
          }
}

相关问题