iOS11中使用苹果Web应用程序的getUserMedia不起作用。

5

编辑:重复问题,请参考如何在iOS11主屏幕Web应用程序上访问相机?

我在使用苹果Web应用程序和getUserMedia API访问相机时遇到了问题。

当我通过Safari访问某些应用程序时,它可以很好地工作,它会请求权限来使用相机,并在批准后我可以看到相机的视频。但是,如果我将同样的页面保存为Web应用程序并添加到主屏幕,这个功能就不再起作用了。没有提示要求访问相机,这似乎是问题所在,因为它默认情况下未启用。

导致问题的行是一个元标记,它使iOS上的Web应用程序全屏显示。

<meta name="apple-mobile-web-app-capable" content="yes">

有人知道这里发生了什么,为什么它失败了吗?我是否还需要通过元标记设置相机权限?

提前感谢!


当我的移动 Web 应用从主屏幕书签模式运行时,遇到了相同的问题。但在常规的 iOS Safari 中仍然可以使用。此外,我注意到 localStorage 和使用桌面版 Safari 开发菜单检查书签式 Web 应用程序时,将不会显示为“可检查”。这是苹果的疏忽吗?还是他们试图锁定某些东西? - tonejac
2个回答

5

苹果已经移除了在UIWebView、WKWebView、SFSafariViewController或者一个被“添加到主屏幕”的网页中使用getUserMedia的能力。

原因不明,但我认为这不是一个错误。

一位苹果员工在iOS 11中关于WebRTC写道:

......现在,WebRTC只支持Safari。没有WKWebView,甚至没有SFSafariViewController。

我可以确认,这也包括UIWebView(通过个人测试)。


你能提供一些官方链接吗?这样我向我的领导解释会更容易。 - Rakesh
1
一位苹果员工已经确认,WebRTC仅在Safari中受支持,不支持WKWebView、UIWebView和SFSafariViewController。https://forums.developer.apple.com/thread/88052 - Klathmon

0

navigator.mediaDevices.getUserMedia 函数在昨天发布的 iOS 14.3 中回归了(请确保您没有使用已经弃用navigator.getUserMedia)。

我们将在 Cordova 中使用它,如果我们发现一些不稳定性,我会更新这篇文章。

别忘了在您的 <video> 元素中使用 playinline 属性,如果您不想让视频全屏播放。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接