电容器 3 React App mediaDevices 未定义,iOS 14.5

Capacitor 3 React App mediaDevices is undefined, iOS 14.5

我有一个用 Capacitor 包装的 React 网络应用程序。大多数事情都可以正常工作,但我无法让 navigator.mediaDevicesnavigator.getUserMedia 成为 undefined 以外的任何东西。我也没有收到请求用户许可的弹出窗口。

我已经在 https://github.com/geckse/ionic-capacitor-webrtc-camera-example 拉取并构建了示例应用程序,它可以在我的 iOS 14.5 iPhone sim 上运行 - 万岁!除了仔细检查,它使用 Capacitor 2 和现在已贬值的功能来请求相机权限。我尝试在我的 Capacitor 3 应用程序中使用相同的(已折旧的)代码,但即便如此似乎也无济于事。我似乎找不到任何有关如何为 Capacitor 3 中的 Capacitor Webview 正确请求相机访问的信息。

我的 Info.plist

中有以下内容
<dict>
  ...
  <key>NSCameraUsageDescription</key>
  <string>To scan barcodes</string>
</dict>

我一直在留言板和论坛上转来转去,梳理大量相似但不相同的问题。常见的事情似乎是 none 的示例应用程序使用 Capacitor 3。我现在不知所措,因此出现了堆栈溢出问题。任何帮助将不胜感激。

好的 - 我终于修复了它。如此简单的解决方案,所以这里是为任何和我有同样问题的人提供的:

原来你的 Info.plist 中也必须有麦克风权限描述,否则 mediaDevices 就是未定义的。大概这是因为 webRTC 没有将对摄像头和麦克风的访问权限分开,因此未经许可您无法访问其中任何一个。

现在我的 Info.plist 中有以下内容,并且效果很好:

<dict>
    ...
  <key>NSCameraUsageDescription</key>
  <string>To scan barcodes</string>
  <key>NSMicrophoneUsageDescription</key>
  <string>To allow camera access for barcode scanning</string>
</dict>