8t7oQfT
8t7oQfT
  • 发布:2018-04-23 14:26
  • 更新:2018-04-26 10:22
  • 阅读:1664

audio模块在IPhone5上播放音频失败

分类:HTML5+
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安装包不是现在打包的)。

2018-04-23 14:26 负责人:无 分享
已邀请:
8t7oQfT

8t7oQfT (作者)

现在发现是因为页面有<audio>标签请求相同的资源,分段缓存,缓存了资源的一部分,然后download的时候到缓存中取数据了,所以取到了不完整的数据,导致播放失败,解决方法:去掉audio标签,清除缓存,在download的url上加上随机参数,保证不受缓存干扰,正在测试。
…………………………………………………………………………………………
真机调试OK

该问题目前已经被锁定, 无法添加新回复