情况
在我的Cordova混合应用程序(使用Quasar框架构建)中,我需要添加视频通话功能。
我需要使用功能getUserMedia()
。
在localhost上进行测试时,一切正常,但是在设备上进行测试时,一切正常。
错误:
[Deprecation] getUserMedia() no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS.
此错误很可能是由于Cordova不在https上运行引起的。
尝试:
我已尽我所能在Google上找到的所有内容,但无济于事。
人行横道:
我见过有人建议安装crosswalk插件。我已经尝试过,但没有任何改变。
权限:
我尝试使用android-permissions插件寻求许可。
但是当它提示请求时,尽管单击了ALLOW
按钮,但权限仍设置为DENIED_ALWAYS
...
我尝试使用diagnostic cordova插件,但结果相同
问题:
如何在Cordova应用中使用getUserMedia()
?
编辑-解决方案:
@Andre解决方案是解决该问题的正确方法。
我在设备的开发环境中运行应用程序时遇到了该错误。 Quasar在192.168.0.18上运行我的devServer,该主机与localhost不同,因此未被识别为安全。
通过在配置中设置https: true
,该问题已解决。
构建应用程序后,Cordova在file://上运行,并且在file://协议上没有不安全的来源问题,如@jcesarmobile在评论中指出的那样。
我在构建时仍然遇到问题,但与该问题本身无关,但是涉及权限,因此我设法使用cordova-plugin-android-permissions
插件来解决它们。
答案 0 :(得分:1)
您不能。
http://(不安全来源)不再支持使用getUserMedia(),仅在https://(安全来源)上可以使用
使用Quasar框架,您可以通过编辑quasar.conf.js文件来通过HTTPS使用Webpack。 Here are allowed parameters。
devtool: 'cheap-module-source-map',
optimization: { minimize: false },
它将使用自签名证书。
如果要使用自己的证书,请按以下说明使用:
// quasar.conf.js
devServer: {
https: true
}
答案 1 :(得分:0)
对于自发布 cordova-ios@6.0.0 以来遇到此问题的任何人,现在有一种更简单的方法可以在运行 iOS 14.5 或更高版本的 iOS 设备上解决此问题
将以下内容添加到 config.xml 允许将 webview 视为安全上下文:
<preference name="scheme" value="app" />
<preference name="hostname" value="localhost" />
来源:https://cordova.apache.org/announcements/2020/06/01/cordova-ios-release-6.0.0.html
我仍在寻找不需要本地网络服务器的 Android 解决方案。