当前位置: 首页 > 知识库问答 >
问题:

前端 - navigator.mediaDevices.enumerateDevices在ios微信浏览器里调用摄像头无响应?

翟弘
2024-03-28

navigator.mediaDevices.getUserMedia在ios微信浏览器里调用前置摄像头无响应

测试了4台
ios 17.0以上的(微信版本都为8.0.48) 微信浏览器和safari浏览器都可以正常调用 17以下不行

而且控制台没有任何异常和日志 我在navigator.mediaDevices.getUserMedia后也跟了catch方法 也没有捕获到 代码执行似乎是陷入这个方法里没有出来一样 then和catch都没有执行 然后也没有任何异常捕获

后面又尝试先获取设备id去调用 navigator.mediaDevices.enumerateDevices
手机上获取的设备信息 deviceId为空字符串

共有1个答案

董意蕴
2024-03-28

你遇到的问题似乎与iOS微信浏览器中的某些特定版本或配置有关,特别是在iOS 17.0以下版本。以下是一些建议的解决步骤和考虑因素:

  1. 权限问题:确保你的应用或网站已经获得了调用摄像头和麦克风的必要权限。在iOS中,用户需要明确授予访问摄像头的权限。
  2. iOS版本和微信版本:你提到iOS 17.0以上版本的微信浏览器和Safari浏览器都可以正常工作,但17.0以下版本存在问题。这可能是因为微信或iOS的某些更新修复了这个问题。建议用户更新他们的iOS和微信版本。
  3. navigator.mediaDevices.enumerateDevices问题:如果deviceId为空字符串,可能是因为某些设备没有被正确识别或列出。尝试在不同的设备和iOS版本上测试,看看是否都存在这个问题。
  4. Promise处理navigator.mediaDevices.getUserMedia返回一个Promise。确保你正确地处理了Promise的thencatch部分。例如:
navigator.mediaDevices.getUserMedia({ video: true })  .then(stream => {    // 处理媒体流  })  .catch(error => {    console.error("获取媒体设备失败:", error);  });

如果thencatch都没有执行,可能是因为Promise被挂起或因为某种原因没有解决或拒绝。

  1. 微信浏览器的限制:微信浏览器可能有自己的API限制或实现方式。建议查看微信开发文档,看看是否有关于调用摄像头和麦克风的特定指南或限制。
  2. 其他浏览器测试:除了微信和Safari,尝试在其他iOS浏览器(如Chrome)上测试你的代码,以确定问题是否仅限于微信浏览器。
  3. 检查控制台日志:尽管你提到控制台没有任何异常,但再次确认没有其他的警告或信息可能会提供额外的线索。
  4. 代码简化:尝试简化你的代码,只调用navigator.mediaDevices.getUserMedia而不进行其他操作,看看问题是否仍然存在。这有助于确定问题是否与其他代码部分有关。

如果上述建议都不能解决问题,建议进一步深入研究或考虑与微信开发团队或相关社区联系,看看是否有其他人遇到了相同的问题或是否有已知的解决方案。

 类似资料:
  • 本文向大家介绍js判断浏览器的环境(pc端,移动端,还是微信浏览器),包括了js判断浏览器的环境(pc端,移动端,还是微信浏览器)的使用技巧和注意事项,需要的朋友参考一下 今天突然看到一段很好的代码,分享给大家,顺便也给自己留个笔记,js判断浏览器的环境具体如下: 方法一: 方法二:这个方法摘自:im.qq.com 判断是否为微信客户端: 代码1 代码2 判断微信浏览器是PC端还是手机端,以及手机

  • 本文向大家介绍HTML5如何调用摄像头?相关面试题,主要包含被问及HTML5如何调用摄像头?时的应答技巧和注意事项,需要的朋友参考一下 嘿,这个我知道。 window.navigator.getUserMedia() 然后接收三个参数,第一个是视频或者音频以及分辨率{video:true} 第二个是成功回调,第三个是失败回调。 还有一种调用 window.navigator.mediaDevice

  • 本文向大家介绍Android实现调用摄像头,包括了Android实现调用摄像头的使用技巧和注意事项,需要的朋友参考一下 应用场景: 在Android开发过程中,有时需要调用手机自身设备的功能,本文侧重摄像头拍照功能的调用。 知识点介绍: 使用权限:调用手机自身设备功能(摄像头拍照功能),应该确保已经在AndroidManifest.xml中正确声明了对摄像头的使用及其它相关的feature 1.

  • 我已经和https://github.com/commonsguy/cwac-camera 创建了我的自定义CameraFragment和自定义CameraHost。 我已经重写了getPictureSize和getPreviewSize。通过这两种方法,我能够找出可以使用的大小。我的总体想法是拍摄一幅方形图像,并在拍摄前预览它。 我一直在测试,没有设备返回正方形格式的大小,所以我想最好的方法是选

  • 表情测试 图片转文字 相框 拍摄图片

  • 摄像头用于采集图像和影像信息,通过模块间的组合完成各种创意活动。 净重量:8.1g 体积:24×24×22mm 参数 分辨率:1280×720 像素大小:3.4um×3.4um 最大图像传输速率:全尺寸 @ 30fps 视场角:100° 镜片结构:4G+IR 焦比:2.97 有效焦距:2.4mm 功耗:100uA(待机)~240mW(工作) 电源:USB总线电源 抗跌落能力:1m 工作温度:-30