最佳答案
我们不能从 iOS11(公开发布)主屏幕 Web 应用程序访问相机使用 WebRTC 或文件输入,详情如下。请问我们的用户如何继续访问相机?
我们正在通过 https 服务网络应用程序页面。
更新,艾普丽尔
IOS11.3的公开发布似乎已经解决了这个问题,文件输入摄像头的访问又可以工作了!
更新,三月
正如这里的人们所说,苹果文档建议网络应用程序摄像功能将在11.3版本中与服务工作者一起回归。这是好的,但我们还不确定,如果我们希望每个人都重新安装,直到我们可以在11.3通用汽车彻底测试。
解决方案,十一月
我们失去了苹果想要解决这个问题的希望,然后继续前进。修改了我们的网络应用程序,删除了 iOS 的“添加到主屏幕”功能,并要求受影响的用户删除任何以前的主屏幕图标。
更新,12月6日
IOS11.2和 iOS11.1.2不能修复。
工作区,9月21日
看来我们可以问问网络应用程序的现有用户
我们当前的生产代码使用的文件输入在 iOS10及以上版本中已经工作了很多年。在 iOS11上,它可以作为 Safari 标签页使用,但不能从主屏幕应用程序中使用。在后一种情况下,相机是打开的,只有一个黑色的屏幕显示,因此它是不可用的。
<meta name="apple-mobile-web-app-capable" content="yes">
...
<input type="file" accept="image/*">
IOS11上的 Safari 11提供了很棒的 WebRTC 媒体捕获。
我们可以使用 Navator.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;