如何正确使用MediaDevices.getUserMedia()?

PC端浏览器可正常呼起权限请求窗体,比如XXX想要使用您的摄像头/麦克风如此种种:
图片描述

在移动端QQ和微信等内置浏览器也可以呼起类似的确认窗口:
图片描述

但是遇到的问题是手机自带浏览器,或第三方诸如UC、Via、猎豹等,均不能给出类似弹窗,默认就禁止了。

请问是否有解决方案?

另外,MDN在该API文中指出“返回的promise对象可能既不会resolve也不会reject,因为用户不是必须选择允许或拒绝”,这种情况如何对应呢?

阅读 7.2k
2 个回答

谢邀.

移动端浏览器兼容性这个没辙,尤其像getUserMedia这种,需要硬件参与交互的。可能表现型的特性还能找到个近似的Polyfill来做,但是跟硬件打交道的,基本没戏就是没戏,只能等手机设备的升级换代(因为像好多品牌的安卓,原生系统是不给升级的,又得做适配又得教用户,空造成本一滩没利润,厂商才不去费那个事儿,有漏洞都不会管的),或者挂在个大平台下(比如微信或者阿里系),才能做这块的业务,这是技术选型上要考虑的成本。

到具体的实现上,移动端除了苹果的原生Safari以外,就是安卓平台的微信x5、UC(阿里系APP)这俩了。后两者分别有兼容性快查平台,x5的在X5 CanIUse,UC的在U4 Platform Status,另外这俩内核也有网站支持。至于Safari,虽然有文档,但是我可能打开的姿势不对所以看不太懂……不过除了这仨内核以外的,支持的几率真的不高了,所以如果一定要做这个功能的话,策略就是把用户尽可能的赶到这几个支持的平台上来。。。

新手上路,请多包涵

请问我为什么在web端的谷歌浏览器里面调用返回notallowed,但是又没有弹出用户授权的确认框,这个是为什么呢?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题