首页 > 解决方案 > Android 10 上的 Cordova 音频流问题

问题描述

我正在尝试使用cordova为无线电频道播放音频流,该代码在所有手机上运行良好,但在华为 Pro 30 上它无法加载并在使用直接时抛出此错误

<audio controls src='mystreamurl' id="myaudio" />

加载资源失败:服务器响应状态为 401(需要身份验证)

我尝试使用 cordova-plugin-media 并确保所有权限都存在:

它抛出错误代码0

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

并已添加到应用程序标签

    android:usesCleartextTraffic="true"

和我的 html 元标记

      <meta http-equiv="Content-Security-Policy" content="default-src *; style-src * 'self' http://* https://* 'unsafe-inline'; script-src * 'self' http://* https://* 'unsafe-inline' 'unsafe-eval';img-src * 'self' https: blob: data: http:; media-src * 'self' 'unsafe-inline' http://* https://* ;font-src *" />

请注意,如前所述,在所有其他手机上它都可以正常工作,但在华为 android 10 无法正常工作时,我已经仔细检查了手机上的应用程序设置和权限,一切似乎都是正确的。

**编辑:我发现问题不在代码中,而是在 Android 10 中的链接上的授权问题,此链接是http://acc.qatarnavigator.com/news/music.html,其中包含音频 src(http://shaincast.caster.fm:44928/listen.mp3?authn3a123cb80bd23dbc6bee1f8156e8c8a0)工作正常。

如果我将它添加为 iframe,Android 10 也会阻止媒体链接(加载资源失败:服务器响应状态为 401(需要身份验证)

所以现在的问题是有什么工作可以授权链接吗?是因为它没有正确编码吗?

请注意,如果我播放任何其他在线媒体 .mp3 链接,它正在工作

我已经测试创建

 <a href="http://shaincast.caster.fm:44928/listen.mp3?authn3a123cb80bd23dbc6bee1f8156e8c8a0">CLICK ME</a>

然后它抛出一个错误

err_cleartext_not_permitted

所以我添加了由于网络配置的新规则

<?xml version="1.0" encoding="utf-8"?>

<domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">shaincast.caster.fm:44928</domain>
</domain-config>

但它再次抛出错误:

加载资源失败:服务器响应状态为 401(需要身份验证)

有任何想法吗?

**

标签: javascriptcordova

解决方案


推荐阅读