h5环信保存离线的音频问题

应用场景:需要接受对方发给自己的音频,但是自己现在不在网页,当有时间的时候可以看到这些没有读的消息(多个页面切换跳转,网页版聊天关闭页面就会断掉连接),需要websql暂时存到浏览器中。


问题:存的音频url不能直接用audio播放,但是转化成blob(环信自己的方法)的也不能播放。后来发现,环信是将音频下载到本地在播放(此时是blob),但是一旦重新加载js,blob就不能播放了。


解决方案:将接受音频的message转化成jsonstr存入websql中,需要从websql中取出的时候,将message转化成object,然后调用环信的下载方法。


部分代码:

//easemobwebim-sdk收到音频消息回调方法的实现
var handleAudioMessage = function(message) {
var str=JSON.stringify(message);//转化成jsonstr
insert(message.from, "xx",getLoacalTimeString() ,str);//存入websql中
};

//下载音频到本地(先从websql中取出这个message str:data)

  var options=JSON.parse(data);console.log(options);//将websql中的message的str转化成object
            options.onFileDownloadComplete = function(response, xhr) {
            var objectURL = Easemob.im.Helper.parseDownloadResponse.call(this, response);
            if (Easemob.im.Helper.getIEVersion != 9 && window.Audio) {
            audio.onload = function() {
            audio.onload = null;
            window.URL && window.URL.revokeObjectURL && window.URL.revokeObjectURL(audio.src);
            };
            audio.onerror = function() {
            audio.onerror = null;
            };
            console.log();
           
            audio.src = objectURL;//音频此时是可以播放的了
           
            }
            };
           
            options.onFileDownloadError = function(e) {
           
            };
            options.headers = {
            "Accept" : "audio/mp3"
            };
            Easemob.im.Helper.download(options);
            }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值