摘要
我们无法使用WebRTC或文件输入从iOS11(公开发行)主屏幕网络应用访问摄像机,详细信息如下。我们的用户如何继续使用相机?
我们通过https提供网络应用页面。
4月更新
iOS 11.3的公共发行版似乎已解决了该问题,并且文件输入摄像头访问再次起作用!3月更新
正如这里的人所说的,苹果文档建议Web应用程序摄像头功能与服务人员一起在11.3中返回。这很好,但是我们不确定是否要大家重新安装,直到我们可以在11.3GM上进行全面测试。
解决方案,十一月
我们失去了希望苹果公司解决此问题并向前迈进的希望。修改了我们的Web应用程序以删除iOS的“添加到主屏幕”功能,并要求受影响的用户删除任何以前的主屏幕图标。12月6日更新
iOS 11.2和iOS 11.1.2无法修复。
解决方法,9月21日
似乎我们可以向网络应用的现有客户咨询
- 不能升级到iOS11-祝你好运:)
- 在iOS相机中拍照,然后在网络应用中重新选择它们
- 等待下一个iOS Beta
- 重新安装为Safari浏览器内页面(在删除ATHS逻辑之后)
- 切换到Android
文件输入
我们当前的生产代码使用文件输入,该文件输入在iOS 10及更高版本上运行良好。在iOS11上,它可以作为Safari标签使用,但不能在主屏幕应用中使用。在后一种情况下,相机是打开的,并且仅显示黑屏,因此无法使用。
<meta name="apple-mobile-web-app-capable" content="yes">
...
<input type="file" accept="image/*">
WebRTC
iOS11上的Safari 11提供了很棒的WebRTC媒体捕获。
根据此处链接的示例代码,我们可以使用navigator.mediaDevices.getUserMedia在台式机和移动设备上的普通网页上捕获相机图像,并将其捕获到画布上。
当我们将页面添加到iPad或iPhone主屏幕时,navigator.mediaDevices
变得undefined
无法使用。
<meta name="apple-mobile-web-app-capable" content="yes">
...
// for some reason safari on mac can debug ios safari page but not ios home screen web apps
var d = 'typeof navigator : ' + typeof navigator; //object
d += 'typeof navigator.mediaDevices : ' + typeof navigator.mediaDevices; // undefined
// try alternates
d += 'typeof navigator.getUserMedia : ' + typeof navigator.getUserMedia; // undefined
d += 'typeof navigator.webkitGetUserMedia : ' + typeof navigator.webkitGetUserMedia; // undefined
status1.innerHTML = d;