使用AVPlayer 播放在线音频,并实现后台锁屏播放,自动连播
在iOS开发中,AVAudioPlayer不是不能播放在线音频的,要播放在线音频只能用以下几个方法:
- AVPlayer
- MPMoviePlayerController 能实现音乐流播(但是此方法苹果在iOS9中已经不推荐使用了)
- Audioqueue,Audiostream (太复杂)
- 第三方库AudioStreamer(只能播放在线音频)
所以用AVPlayer来实现在线音频播放是最好的选择;一下就是利用AVPlayer实现音乐流播并实现后台锁屏播放和设置自动连播的大概步骤:
项目源代码:Swift 2.0 版豆瓣电台
初始化
先声明AVplayer和AVPlayerItem的实例:
|
然后在需要的播放音频的地方给它赋值:
|
以上就是实现播放在线音频的代码,但是如果要实现后台播放和自动连播的话,还要做以下工作:
自动连播
|
后台播放
如果是播放本地音频的话,后台播放只要在APP启动时加上:
|
然后在info.plist文件中添加:
|
即可。
但是如果每一首歌都要请求网络的话,只做上述工作时行不通的,还要在实例化AVPlayer的地方加上:
|
这样才能实现真正的后台播放。
锁屏界面和控制中心添加详情
首先要作以下准备工作
- 在applicationDidEnterBackground中添加:
application.beginReceivingRemoteControlEvents()
- 在ViewDidAppear中添加:
|
- 在viewDidDisappear中添加:
|
- 重写canBecomeFirstResponder方法
|
然后把歌曲详情设置到锁屏界面:
|
再处理锁屏和控制中心点击事件:
|
利用KVO监视播放器的缓存状态和播放状态
|
获取到了缓存时间可以判断当前的缓存时间和当前播放时间的值,来判断网络状况,同时也可以在做视频播放器时用来作缓存条。