摘要
我们无法使用WebRTC或文件输入从iOS11(公开发布)主屏幕Web应用程序访问相机,详情如下 . 我们的用户如何继续访问相机?
我们通过https提供网络应用页面 .
更新,4月
iOS 11.3的公开发布似乎解决了问题,文件输入摄像头访问再次正常工作!
更新,3月
正如这里的人们所说,Apple docs建议web应用程序的功能在11.3中与服务工作者一起返回 . 这很好,但我们还不确定是否我们希望每个人都能重新安装,直到我们可以对11.3GM进行全面测试 .
解决方案,11月
我们失去了希望,苹果希望解决这个问题并向前迈进 . 修改了我们的网络应用程序以删除iOS "Add to home screen"功能,并要求受影响的用户删除任何以前的主屏幕图标 .
更新,12月6日
iOS 11.2和iOS 11.1.2无法修复 .
解决方法,9月21日
似乎我们可以向Web应用程序的现有客户询问
-
没有升级到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 media capture,非常棒 .
我们可以使用navigator.mediaDevices.getUserMedia per the sample code linked here在桌面和移动设备上的普通网页上捕捉相机图像到画布 .
当我们将页面添加到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;
4 回答
我们有类似的问题 . 到目前为止,我们能够做的唯一解决方法是删除它的元标记为“apple-mobile-web-app-capable”,并允许用户在Safari中打开它,一切似乎都能正常工作 .
Update :虽然一些早期发布的更改日志和帖子让我相信使用
manifest.json
而不是apple-mobile-web-app-capable
的Web Apps最终可以访问正确的WebRTC实现,但遗憾的是,这不是正确的,正如其他人已经指出并且测试已经证实 . 悲伤的脸 . 很抱歉由于此造成的不便,让我们希望在遥远的遥远的银河系中幸运的一天,Apple将最终通过(非Safari)WebKit提供的视图中的摄像头访问...是的,正如其他人提到的那样,getUserMedia只能直接在Safari中使用,但在UIWebView和WKWebView中都没有,所以不幸的是你唯一的选择是
删除
<meta name="apple-mobile-web-app-capable" content="yes">
,以便'app'在普通的Safari选项卡中运行,其中可以访问getuserMedia使用像Apache Cordova这样的框架,允许您以其他方式访问设备的摄像头 .
希望Apple能够比以后更快地删除这个WebRTC限制......
资源:
For developers that use WebKit in their apps, RTCPeerConnection and RTCDataChannel are available in any web view, but access to the camera and microphone is currently limited to Safari.
好消息!最初似乎可以从第一个iOS 11.3测试版中的主屏幕Web应用程序访问相机 .
我用几个文件制作了一个repo,证明它有效:
https://github.com/joachimboggild/uploadtest
测试步骤:
从可从手机访问的网站提供这些文件
在iOS Safari中打开index.html
添加到主屏幕
从主屏幕打开应用程序 . 现在网页全屏打开,没有导航ui .
按文件按钮从相机中选择图像 .
现在相机应该正常工作而不是黑屏 . 这表明该功能再次起作用 .
我必须补充一点,我使用的是普通字段,而不是getUserMedia或其他 . 我不知道这是否有效 .
如果您使用文件输入字段,这似乎在iOS 11.4中再次起作用 .