如何在iOS11主屏幕网页应用程序上访问相机?

2022-08-30 04:24:56

总结

我们无法使用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.mediaDevicesundefined

    <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;

答案 1

我们有非常相似的问题。到目前为止,我们能够做的唯一解决方法是删除元标记,使其具有“apple-mobile-web-app-able”,并允许用户在Safari中打开它,一切似乎都正常工作。


答案 2

更新:虽然一些早期发布的更新日志和帖子使我相信使用而不是的Web应用程序最终可以访问适当的WebRTC实现,但不幸的是,这不是真的,正如这里的其他人所指出的那样,并且测试已经证实了这一点。悲伤的脸。对于由此造成的不便,我们深表歉意,并希望在遥远的银河系中的幸运一天,苹果最终将使我们能够访问由(非Safari)WebKit提供支持的视图中的相机...manifest.jsonapple-mobile-web-app-capable

是的,正如其他人所提到的,getUserMedia只能直接在Safari中使用,但在UIWebView和WKWebView中都不可用,所以不幸的是,您唯一的选择是

  • 删除,以便您的“应用程序”在正常的Safari选项卡中运行,其中getuserMedia是可访问的<meta name="apple-mobile-web-app-capable" content="yes">
  • 使用像Apache Cordova这样的框架,该框架允许您以其他方式访问设备的摄像头。

希望苹果早点取消这个WebRTC限制......

来源:
对于在其应用程序中使用WebKit的开发人员,RTCPeerConnection和RTCDataChannel在任何Web视图中都可用,但对相机和麦克风的访问目前仅限于Safari。