我有一个应用程序,需要使用AVAudioSessionCategoryPlayback
才能在设备锁定或我的应用程序处于后台时播放声音。 (这是一个警报功能。)所以我还需要在我的UIBackgroundModes列表中设置“audio”键。
我已将以下代码放在application:didFinishLaunchingWithOptions:
方法中:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
但是,我不想打断已经在设备上播放的任何音乐。当我的应用程序启动时,它会导致Spotify(例如)停止播放音乐。我可以切换到Spotify并按下播放,当我切换回我的应用程序时,它会继续播放。
但这对用户来说非常烦人 - 警报不是我的应用程序唯一做的事情,并且有很多原因让他们启动它而不涉及设置警报。我不认为用户会希望我的应用程序停止在设备上播放任何其他音频。
理想情况下,我从不中断已播放的音频。当设置闹钟时我也可以停止音频(此时我必须激活我的音频会话以确保我能够播放它)但似乎没有办法让我避免音频停止应用程序启动。
是否有某种方法可以在禁用音频会话的情况下启动我的应用,或者在已经应用此选项的情况下启动它?
答案 0 :(得分:1)
事实证明,我使用.prepareForPlayback()
方法在AVAudioPlayer上调用init()
,该方法在didFinishLaunchingWithOptions:
被解雇之前很久就被调用了。