如何在应用程序启动时避免中断已播放的音频?

时间:2014-06-11 02:53:15

标签: ios iphone audio

我有一个应用程序,需要使用AVAudioSessionCategoryPlayback才能在设备锁定或我的应用程序处于后台时播放声音。 (这是一个警报功能。)所以我还需要在我的UIBackgroundModes列表中设置“audio”键。

我已将以下代码放在application:didFinishLaunchingWithOptions:方法中:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback
                                 withOptions:AVAudioSessionCategoryOptionMixWithOthers
                                       error:nil];

但是,我不想打断已经在设备上播放的任何音乐。当我的应用程序启动时,它会导致Spotify(例如)停止播放音乐。我可以切换到Spotify并按下播放,当我切换回我的应用程序时,它会继续播放。

但这对用户来说非常烦人 - 警报不是我的应用程序唯一做的事情,并且有很多原因让他们启动它而不涉及设置警报。我不认为用户会希望我的应用程序停止在设备上播放任何其他音频。

理想情况下,我从不中断已播放的音频。当设置闹钟时我也可以停止音频(此时我必须激活我的音频会话以确保我能够播放它)但似乎没有办法让我避免音频停止应用程序启动。

是否有某种方法可以在禁用音频会话的情况下启动我的应用,或者在已经应用此选项的情况下启动它?

1 个答案:

答案 0 :(得分:1)

事实证明,我使用.prepareForPlayback()方法在AVAudioPlayer上调用init(),该方法在didFinishLaunchingWithOptions:被解雇之前很久就被调用了。