(Ionic / Cordova)getUserMedia

时间:2016-09-22 13:53:19

标签: javascript android cordova ionic-framework webrtc

所以我正在开发一个使用WebRTC的应用程序,而我正想在桌子上敲击我的脑袋。我遇到了getUserMedia的问题,当我在手机上运行它时,它总是会返回 PermissionDeniedError 。(

该应用具有 AndroidManifest.xml

中设置的这些权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

该应用程序确实在运行时请求存储,相机和语音权限,我已经安装了cordova-diagnostic-plugin,它验证了应用程序是否具有这些权限。

我还尝试按照某人的建议设置以下HTML标头:

<meta http-equiv="Content-Security-Policy" content="media-src: 'self' mediastream: blob:;">

我正在运行 Cordova 6.3.1 Ionic 2.0.0 。 (我还根据cordova-diagnostic-plugin的要求安装了Android支持存储库38和支持库23.2.1。)

作为参考,我使用的getUserMedia代码是:

if (navigator.webkitGetUserMedia) {
    navigator.webkitGetUserMedia({audio: true, video: true}, gotUserMedia, reject);
}

Android目标SDK版本设置为23(适用于Android 6)。

有没有人有任何想法可以提供帮助?感谢。

1 个答案:

答案 0 :(得分:1)

好的,危机避免了。事实证明这是我的错,我正在使用离子上的--livereload运行应用程序(获取控制台输出),它通过非ssl本地服务器运行它,getUserMedia不喜欢xD

我通过&#34; ionic build android&#34;构建了应用程序。并在我的手机上手动安装,现在工作正常:)