很多时候我们都想把数据预先缓存到本地,节省带宽。但是最近在处理微信小程序播放缓存到本地的音频文件的时候,遇到一些小问题,然后对于安卓和IOS需要采用不同的播放策略。

首先,如果哪怕用audio标签来播放在线的音频文件,假如服务端没有实现断点续传,IOS是无法播放的,这个需要注意。

对于缓存在小程序的音频(wx.saveFile(OBJECT)保存的音频),IOS只能通过播放背景音乐的接口播放,其它播放方法都没有成功实践,而对于安卓,内部 audio 上下文 innerAudioContext 对象即可播放。给出代码:

    var res = wx.getSystemInfoSync()
    if (res.platform == 'ios') {
      this.audio = wx.getBackgroundAudioManager()
    } else {
      this.audio = wx.createInnerAudioContext();
    }

    this.audio.title = "音乐文件";
    this.audio.src = "本地文件地址";
    this.audio.play();