0

我有一个用 Capacitor 包装的 React Web 应用程序。大多数事情都很好,navigator.mediaDevicesnavigator.getUserMedia除了undefined. 我也没有收到请求用户许可的弹出窗口。

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

我的 Info.plist 中有以下内容

<dict>
  ...
  <key>NSCameraUsageDescription</key>
  <string>To scan barcodes</string>
</dict>

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

4

1 回答 1

2

好吧 - 我终于修好了。这样一个简单的解决方案,所以这里适用于和我有同样问题的人:

事实证明,您的 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>
于 2021-08-02T12:42:47.230 回答