mp3音频播放不适用于iOS上的Cordova 3.5

时间:2014-06-13 12:30:02

标签: ios audio cordova

最近我将iOS项目从Cordova 3.3升级到3.5。

mp3文件(之前已下载到iOS标准文档文件夹中)将无法使用媒体API /插件播放。这段代码在iOS上已经可以在许多版本上可靠地工作,包括Cordova 3.3 ...... mp3文件已被下载到标准iOS App'文档'文件夹中名为'Downloads'的子目录中..

在XCode控制台中,我收到以下错误:

未知资源'文件://localhost/Users/weeasle/Library/Application%20Support/iPhone%20Simulator/6.1/Applications/ {App-ID} /Documents/Downloads/testsound.mp3'

在我的代码中(在File Plugin API的几个代码块之后),我使用以下命令获取目录:downloadDirFullPath = window.appRootDir.toURL();

为了遵守3.5的文件API中的新变化,我最近改变了这一点 downloadDirFullPath = window.appRootDir.fullPath;

Cordova 3.5的Media Plugin API是否因iOS App Documents目录中的音频播放而中断?

或者我真的很累,错过了一些明显的东西......任何建议或信息都非常感激。

克里斯 又名weeasle

更新于20 / Jun / 14:Fix Found。我现在可以在iOS Cordova 3.5上播放我下载的.mp3了...显然,使用新的Cordova 3.5文件系统,entry.fullPath方法不再有效,并按照https://github.com/apache/cordova-plugin-file/blob/master/doc/index.md

使用Cordova调用图像时这很好用但是iOS上的Media Plugin已经有了很长时间的怪癖:对于声音播放,它不接受以file开头的URL:///它只接受绝对路径喜欢/ var / mobile / Applications / {GUID} / Documents /

答案和修复是使用从fileSystem.root.getDirectory返回的条目中调用的新的toInternalURL()方法。我使用的确切调用是downloadDirFullPath = window.appRootDir.toInternalURL(); (从fileSystem.root.getDirectory传递的条目调用)。

返回:cdvfile:// localhost / persistent / Downloads /当预先挂载到.mp3或其他音频文件在iOS中成功播放时..

这也适用于显示图像和媒体,因此它是Cordova iOS 3.5及更高版本的唯一可靠解决方案..

这是目前为止首选的解决方案,因为它比使用相对路径更安全(好像将来Apple在iOS版本中进行重要的文件结构更改,文件访问可能会中断)...

还有一点需要注意 - 除了上面的调用/方法,downloadDirName = window.appRootDir.name;还设置了cdvfile:// localhost / persistent / base path

Weeasle

3 个答案:

答案 0 :(得分:1)

我最近没有在iOS上使用过媒体,但是如果我看一下它所说的文档:

var myMedia = new Media("audio/beer.mp3")
myMedia.play()  
// first looks for file in www/audio/beer.mp3 then in 
<application>/documents/tmp/audio/beer.mp3

所以,如果我是你,我会尝试相对的路径:

"../Downloads/testsound.mp3"

哪个应该改变:

<application>/documents/tmp/../Downloads/testsound.mp3

进入公正:

<application>/documents/Downloads/testsound.mp3

答案 1 :(得分:1)

最新的cordova 3.5版本对我有用的唯一一件事就是: http://www.raymondcamden.com/2014/06/23/Cordova-Media-API-Example

确保安装此插件: cordova插件添加https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git

答案 2 :(得分:0)

前缀文档结束了我的工作,让我带到应用程序中的持久存储位置。在iOS插件的源代码中,您可以使用这些前缀:

"documents://"
"http://"
"https://"
"cdvfile://"