var playSound = function(file, msgItem) {
player = plus.audio.createPlayer(file);
player.play(function() {
console.log('play audio succ')
}, function(e) {
console.log('play audio error')
console.log(JSON.stringify(e))
// {"message":"此功能不支持,http://ask.dcloud.net.cn/article/282","code":-3}
});
};
var msgContent = $data.content.file.url
var msgItem = ''
plus.io.resolveLocalFileSystemURL('_doc/audio/' + msgContent, function(entry) {
playSound('_doc/audio/' + msgContent, msgItem);
}, function() {
var dtask = plus.downloader.createDownload(SERVER_URL + msgContent, {
'filename': '_doc/audio/' + msgContent
}, function(d, status) {
if(status == 200) {
playSound('_doc/audio/' + msgContent, msgItem);
} else {
$.toast('加载音频文件失败');
}
});
dtask.start();
});
以上代码真机调试,在安卓机上正常运行,在IPhone6上正常运行,在IPhone5上直接走错误回调,输出信息{"message":"此功能不支持,http://ask.dcloud.net.cn/article/282","code":-3}。
但播放语音功能在另一个项目中也是类似的代码,却可以在相同的IPhone5上正常运行(安装APP的,不是真机调试,APP安装包不是现在打包的)。
1 个回复
8t7oQfT (作者)
现在发现是因为页面有<audio>标签请求相同的资源,分段缓存,缓存了资源的一部分,然后download的时候到缓存中取数据了,所以取到了不完整的数据,导致播放失败,解决方法:去掉audio标签,清除缓存,在download的url上加上随机参数,保证不受缓存干扰,正在测试。
…………………………………………………………………………………………
真机调试OK