【发布时间】:2017-11-20 17:44:17
【问题描述】:
我正在使用 cordova-plugin-nativeaudio 在应用程序中播放音频。 当我尝试使用 iOS 设备预加载文件时:
preload('testsound', cordova.file.dataDirectory + "audio/0/Hello.mp3");
我收到以下错误:
错误:未处理的承诺拒绝:(原生音频)找不到资产。 (file:///var/mobile/Containers/Data/Application/"[GUID]/Library/NoCloud/audio/0/Hello.mp3);区域:;任务: 设置超时;值:(原生音频)未找到资产。 (file:///var/mobile/Containers/Data/Application/[GUID]/Library/NoCloud/audio/0/Hello.mp3)
目标文件
目标文件 (audio/0/Hello.mp3) 从外部 url 下载并存储在 cordova.file.dataDirectory 中。下载成功,控制台输出如下:
下载完成:file:///var/mobile/Containers/Data/Application/[GUID]/Library/NoCloud/audio/0/Hello.mp3
为了确保它确实存储在预期的位置,我检查了:
this.file.checkFile(cordova.file.dataDirectory, "audio/0/Hello.mp3")
控制台输出显示存储成功:
file:///var/mobile/Containers/Data/Application/[GUID]/Library/NoCloud/audio/0/Hello.mp3 文件确实存在!
现在我尝试用原生音频预加载文件,我得到了上面的错误(这个问题中的第一个错误)。
问题似乎出在文件的存储位置
我还尝试了从本地 applicationDirectory (/www/assets/audio/0/Hello.mp3) 预加载,预加载工作正常。但是 applicationDirectory 是只读目录,所以我无法从外部 url 下载音频并将它们保存在那里。
原生音频应该支持从 url 预加载(不仅来自本地 applicationDirectory),因为它在他们的 Ionic API 文档中有所说明。
我在模拟器和 iOS 设备上都遇到了同样的错误。
有没有人遇到过同样的问题,并设法解决了?
感谢您的帮助。 BR/
【问题讨论】:
-
尝试使用onProgress,有时它显示完整但文件损坏,使用onProgress你可以知道下载了多少字节
-
谢谢伊佐。我相信该文件已成功下载。因为如果我在 applicationDirectory 中下载(只有模拟器允许这样做,但不能使用设备),我可以预加载和播放音频。无论如何,我都会检查 onProgress,因为确保下载完成似乎很有用。谢谢。 BR/
标签: cordova audio ionic-framework ionic2 ionic3