如何在iOS11主屏幕网页应用程序上访问相机?
总结
我们无法使用WebRTC或文件输入从iOS11(公开发布)主屏幕Web应用程序访问相机,详情如下。我们的用户如何继续访问相机?
我们通过 https 提供 Web 应用页面。
更新,4月
iOS 11.3的公开版本似乎已经解决了这个问题,文件输入摄像头访问再次工作!更新,3月
正如这里的人们所说,苹果文档建议网络应用程序相机功能与服务人员一起在11.3中回归。这很好,但我们还不确定我们是否希望每个人都重新安装,直到我们可以在11.3GM上进行彻底测试。
解决方案,11 月
我们失去了苹果想要解决这个问题的希望,并向前迈进。修改了我们的Web应用程序以删除iOS“添加到主屏幕”功能,并要求受影响的用户删除任何以前的主屏幕图标。更新, 12月6日
iOS 11.2 和 iOS 11.1.2 无法修复。
解决方法,9 月 21 日
似乎我们可以询问Web应用程序的现有客户
- 不升级到iOS11 - 祝你好运,:)
- 在 iOS 相机中拍照,然后在 Web 应用中重新选择它们
- 等待下一个ios测试版
- 重新安装为 Safari 浏览器内页面(删除 ATHS 逻辑后)
- 切换到安卓
文件输入
我们当前的生产代码使用文件输入,该输入在iOS 10及更早版本中已经运行多年。在iOS11上,它可以用作Safari选项卡,但不能从主屏幕应用程序使用。在后一种情况下,相机被打开并且仅显示黑屏,因此无法使用。
<meta name="apple-mobile-web-app-capable" content="yes">
...
<input type="file" accept="image/*">
网联
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;