mp3文件(以前下载到iOS标准文档文件夹)不能使用媒体API /插件播放.该代码已经在iOS上可靠地运行在许多版本上,包括Cordova 3.3 … mp3文件已被下载到标准的iOS App’文档’文件夹中名为“Downloads”的子目录中.
在XCode控制台中,我收到以下错误:
未知的资源文件:// localhost / Users / weeasle / Library / Application Support / iPhone Simulator / 6.1 / Applications / {App-ID} /Documents/Downloads/testsound.mp3′
在我的代码(在File Plugin API的几个代码块之后),我得到目录:downloadDirFullPath = window.appRootDir.toURL();
为了符合3.5的文件API中的新变化,我最近更改了
downloadDirFullPath = window.appRootDir.fullPath;
来自iOS App Documents目录的音频播放的Cordova 3.5的Media Plugin API是否已损坏?
或者我只是真的很累,缺少一些明显的东西…任何建议或信息非常感谢.
克里斯
又名荒诞
UPDATE ON 20 / Jun / 14:Fix Found.我现在可以让我下载的.mp3播放在iOS Cordova 3.5 …显然与新的Cordova 3.5文件系统entry.fullPath方法不再工作,并被entry.toURL()替换为https://github.com/apache/cordova-plugin-file/blob/master/doc/index.md
当使用Cordova调用图像时,这可以正常工作.但是,iOS上的媒体插件已经有一段时间了:对于声音播放,它不接受以file://开头的URL,它只采用绝对路径,如/ var /移动/应用/ {GUID} /文档/
答案和修复是使用从fileSystem.root.getDirectory返回的条目中调用的新的toInternalURL()方法.我使用的确切的调用是downloadDirFullPath = window.appRootDir.toInternalURL(); (从fileSystem.root.getDirectory传递的条目中调用).
这将返回:cdvfile:// localhost / persistent / Downloads /哪个在iOS之前成功播放.mp3或其他音频文件?
这也适用于显示图像和媒体,因此它是Cordova iOS 3.5及更高版本的单一可靠解决方案.
这是迄今为止首选的解决方案,因为它比使用相对路径更安全(如果将来Apple在iOS版本中进行重大的文件结构更改,文件访问可能会中断)…
另外一个注意事项 – 除了上面的调用/方法,downloadDirName = window.appRootDir.name;还设置cdvfile:// localhost / persistent / base路径
Weeasle
解决方法
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