因为要开发小程序音频播放,最近折腾了一段时间,总结下一些问题,便于后面回顾,也方便大家开发的时候避免踩坑。
直接进入正题,小程序音频有好几种,这里我们要根据实际情况去选择,这里大概列一下。
音频类型 | InnerAudioContext(内置音频) | BackgroundAudioManager(背景音频) |
---|---|---|
播放场景 | 只支持在小程序中播放,回到微信或者锁屏等会停止 | 可以微信中继续播放,ios可以锁屏在播放控制器中切换播放,安卓根据场景也会出现音乐播放控制器 |
适用场景 | 交互的提示音、特效音乐等只在小程序中使用的场景 | 音乐、课程等内容,需要支持用户锁屏后继续收听 |
是否需要资质 | 符合官方要求即可 | 符合官方要求同时需要在配置文件中添加 "requiredBackgroundModes": ["audio"], // 申明需要后台运行的能力 audio=后台音乐播放 |
这里主要考虑了这两种音频播放功能,因为微信已经停止对audio组件的维护,现在都是使用api创建上下文,这两种除了使用场景不太一致,其他功能大体相同,后面就不单独列举这两个的差异了。
接下来应该算是开发中的重头戏,也是最头疼的问题,ios和安卓兼容问题,这个问题在音频中属实是一个大坑,很多交互完全不同,如果只是做简单音频播放可能没啥感觉,但是如果做课程、音乐类的需要很多细致操作的话这些坑不得不面对,不得不填。
大致描述下我们的需求,类似音频播放器,支持上一首下一首、快退快进、单曲顺序随机等基础功能,当然也支持锁屏和回到微信继续收听,下面就直接列坑点了
功能 | Ios | Android |
---|---|---|
stop事件 | 会清除播放器实例的src | 不会清除src |
ended事件 | 播放结束会先清除src,切换源时会触发多次事件 | 不会清除src,且只触发一次事件 |
切歌 | 不触发stop监听 | 触发stop监听事件 |
切到微信后台 | 播放器stop,触发监听,重新进入src丢失,进度为0 | 播放器暂停,再次进入不丢失播放进度 |
具体开发处理兼容问题我就不列代码了,找到问题原因再去根据情况优化处理就好,最后再提一个坑点
就是seek这个方法,这个是我们用来设置播放时间的,但是时灵时不灵就很坑,参考其他大佬解决问题的方案,这里建议放在onTimeUpdate回调事件中去设置,相当于做个弥补方案。
整理的主要是按照我碰到的问题整理的,大家知道坑点再根据实际情况处理即可。
网友评论