aja*_*yel 117 javascript html5 camera webrtc ios11
我们无法使用WebRTC或文件输入从iOS11(公开发布)主屏幕Web应用程序访问相机,详情如下.我们的用户如何继续访问相机?
我们通过https提供网络应用页面.
正如这里的人们所说,Apple docs建议网络应用程序相机功能在11.3与服务工作者一起返回.这很好,但我们还不确定是否我们希望每个人都重新安装,直到我们可以对11.3GM进行彻底测试.
iOS 11.2和iOS 11.1.2无法修复.
似乎我们可以向Web应用程序的现有客户询问
我们当前的生产代码使用的文件输入在iOS 10及更早版本中运行良好多年.在iOS11上,它可用作Safari选项卡,但不能用于主屏幕应用程序.在后一种情况下,相机被打开并且仅显示黑色屏幕,因此它是不可用的.
<meta name="apple-mobile-web-app-capable" content="yes">
...
<input type="file" accept="image/*">
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
小智 22
我们有类似的问题.到目前为止,我们能够做的唯一解决方法是删除它的元标记为"apple-mobile-web-app-capable",并允许用户在Safari中打开它,一切似乎都能正常工作.
Sta*_*nas 22
更新:虽然一些早期出版的更改日志,并且帖子让我相信,使用网络应用程序manifest.json,而不是apple-mobile-web-app-capable将最终有机会获得适当的WebRTC实现,可惜这是不正确的,因为其他人在这里已经指出并测试已证实.悲伤的脸.很抱歉由于此造成的不便,让我们希望在遥远的一个银河系中幸运的一天,Apple将最终通过(非Safari)WebKit驱动的视图给我们摄像头访问...
是的,正如其他人所提到的,getUserMedia只能直接在Safari中使用,但在UIWebView和WKWebView中都不可用,所以不幸的是你唯一的选择是
<meta name="apple-mobile-web-app-capable" content="yes">以便您的'app'在普通的Safari选项卡中运行,可以访问getuserMedia这是为了希望Apple更快地删除这个WebRTC限制......
来源:
对于在其应用中使用WebKit的开发人员,RTCPeerConnection和RTCDataChannel可在任何Web视图中使用,但目前仅限于Safari访问摄像头和麦克风.
Joa*_*ild 15
好消息!最初似乎可以从第一个iOS 11.3测试版中的主屏幕Web应用程序访问相机.
我用几个文件制作了一个repo,证明它有效:
https://github.com/joachimboggild/uploadtest
测试步骤:
现在相机应该正常工作而不是黑屏.这表明该功能再次起作用.
我必须补充一点,我使用的是普通字段,而不是getUserMedia或其他类似的字段.我不知道这是否有效.