这段时间刚好结束一个小程序,被坑的好惨,所以罗列出来,有用的着的,就抱走吧!
1.关于音频,项目要求能在退出小程序的情况下继续播放,所以我直接用了 wx.getBackgroundAudioManager();
但是他有个坑,我先前没有写title、epname、slnger、coverImgUrl、webUrl这几个属性安卓播放没有问题,但是一到ios里面就不播放,没有实践到底是哪个属性的原因,保险起见我把他们都写上,播放就成功了;
第二个坑是这个对象有一个duration的属性来求当前音频的长度,但是他请求回来为0;有两个方法解决,一是你的所有音频皆为https请求;二是做延迟,写一个setTimeout()函数,时间不好掌握,我写的是1s,但依旧有网络缓慢的时候不能够请求到,所以我在
onTimeUpdate这个方法里面又重新给值了一遍,当然要加判断,当duration的属性值为0的时候;
2.关于转发 onShareAppMessage();
这个关于音频的播放页转发以后,不能播放,这个如果有知道原因的可以给我评论或者留言,所以我换了一个方法就是转发页的路径是首页,然后由首页带着id跳转到音频页,这样转发还可以直接返回首页,可以说很666了。
3.最好能把wx.getSystemInfo()里面定义的变量在data里面做一个基本设置;
4.做音频的时候要求跳转到播放页播放以后,如果页面返回还需要在列表页面显示哪首歌在播放;这就涉及到子页面传变量给父页面
在播放页面:
back: function () {
var that = this;
let pages = getCurrentPages();
let prevPage = pages[pages.length - 2];
prevPage.setData({
id: that.data.id
});
}
在首页这样接收:
onShow: function () {
var that = this;
let pages = getCurrentPages();
let currPage = pages[pages.length - 1];
that.setData({
id: currPage.data.id
});
}
5.slider这个控件家音频播放的时候,要拉动控件,设置控件里面的这个属性bindchange;首先你可以检测播放状态,如果是暂停就调成播放,然后
//position为e.detail.value;
//value为控件值
//currentProcess为当前播放时间
that.setData({
value: position,
currentProcess: that.formatTime(position)
});
backgroundAudioManager.seek(position);
wx.seekBackgroundAudio({
position: position
})
最后再将播放状态调整为原来的状态;但是这个方法有个bug是在暂停的时候拉进度,会不太灵!!!!!!如果有知道原因的可以评论,留言我。
6.在小程序做测试的时候一定要确保对方手机上的小程序也是你修改的最新版本,不然就会觉得出错了,但是找不到原因,但实际上可能他的开发版本还是你昨天的............超级尴尬到怀疑人生;
怎么样-----惊喜不惊喜!!!!
欢迎评论,如果有什么不对的地方尽管指出来,如果以后我再遇到坑,我还会来补充的;