如何避免中断我的应用程序启动时已播放的audio?

我有一个应用程序需要使用AVAudioSessionCategoryPlayback为了播放声音,而设备被locking或我的应用程序在后台。 (这是一个闹钟function。)所以我也需要在我的UIBackgroundModes列表中设置“audio”键。

我已经把下面的代码放在我的application:didFinishLaunchingWithOptions: method:

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

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

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

理想情况下,我绝不会中断已经播放的audio。 我也可以在设置闹钟时停止audio(此时我必须启动audio会话以确保能够播放),但是似乎没有办法避免audio停止应用程序启动

有没有办法启动我的应用程序禁用audio会话,或启动与此应用程序已经应用?

事实certificate,我在一个init()方法的AVAudioPlayer中调用了.prepareForPlayback()方法,这个方法在我的didFinishLaunchingWithOptions:被调用之前就已经被调用了。