我需要:
- 播放声音
- 环路
- 继续在后台播放
AVAudioPlayer
的所有功能都很好,但现在我必须使用AVPlayer
来播放iPod库中的音乐歌曲。但有一个大问题:AVPlayer没有像AVAudioPlayer
中那样的numberOfLoops
属性。
好的,您可以为AVPlayerItemDidPlayToEndTimeNotification
向NSNotificationCenter
注册通知(也可以使用指定时间等于歌曲持续时间的addBoundaryTimeObserverForTimes
方法),以便在歌曲播放到最后时收到通知。但只有当应用程序在前台,在后台歌曲继续播放,但在结尾停止时,这才有效。
通知也在后台接收(使用NSLog进行检查),但选择器的代码:
AVPlayerItem *playerItem = [notification object];
[playerItem seekToTime:kCMTimeZero];
没有效果,歌曲没有循环。
有什么建议吗?
你遇到的问题是,当玩家进行搜索时,你的应用程序看起来已经播放完音频,所以它被扔到了篝火上。:)
我花了几天时间创建了这个变通方法:
-
将"应用程序播放音频"添加到info.plist 中的"所需背景模式"
-
创建另一个AVplayer,以0.00000001f的速率播放一秒钟的mp3文件(silentMp3Player.rate=0.0000001f),当您的应用程序进入后台时启动,当它重新进入前台时停止。
尝试添加以下代码:
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)