iPhone应用程序允许背景音乐继续播放

当声音播放后,立即启动iPhone游戏时,正在播放的背景音乐或播客停止播放。 我注意到其他游戏允许背景audio继续播放。

这怎么可能? 我是否需要重写我的App Delegate中的方法?

在你的application:didFinishLaunchingWithOptions:放置这行代码application:didFinishLaunchingWithOptions:你的AppDelegate方法,或者在使用audio播放器之前。

  [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil]; 

根据文档, AVAudioSessionCategoryAmbient类别是

对于声音播放不是非主要的应用程序,也就是说,您的应用程序可以在声音closures的情况下成功使用。

此类别也适用于“玩”风格的应用程序,例如用户通过iPodaudio播放的虚拟钢琴。 当您使用此类别时,来自其他应用程序的audio会与您的audio混合。 您的audio通过屏幕locking和静音开关(iPhone上的Ring / Silent开关)静音。

如果你还想确保没有错误发生,你必须检查返回值

 NSError *error; BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&error]; if (!success) { //Handle error NSLog(@"%@", [error localizedDescription]); } else { // Yay! It worked! } 

作为最后一点,不要忘了将AVFoundation框架链接到您的项目并导入它。

 #import <AVFoundation/AVFoundation.h>