2010-07-06 45 views
9

我已将Info.plist中的UIBackgroundModes属性添加到“audio”的数组条目中,并添加了设置音频会话的呼叫:[session setCategory: AVAudioSessionCategoryPlayback error: &error];是否可以测试在模拟器上播放的iOS4多任务/背景音乐?

但是,我唯一的测试设备是iPod Touch 2G,它不支持多任务处理。我尝试过模拟器,但是当我切换到Safari时音乐停止播放。但是当我切换回我的应用程序时,该歌曲继续播放到比离开应用程序时更远的位置。

它似乎一直在后台播放,但我在使用其他应用程序(Safari)时没有听到我的应用程序的音频。

+0

我也想知道。如果我们可以在模拟器中测试多任务或不更新apns徽章 – harshalb 2010-07-07 11:54:37

回答

18

我也有同样的问题。在模拟器中,音频暂停,当您启动它时,它将恢复播放。但在设备上进行测试后,它完美运行并且音频在后台继续播放。我已经使用的示例代码是

AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; 
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 
[audioPlayer play]; 
+0

我看到了相同的行为。在iPhone 4上工作的代码将在模拟器中静静地前进。 – drawnonward 2010-07-14 07:15:59

+0

我想提一下,这也适用于支持流的AVPlayer类。设置类别将使音频流应用程序能够在设备锁定或应用程序暂停时继续播放。很有帮助。 – 2010-08-23 17:48:00

+0

我不得不编辑MyApp-info.plist才能正常工作。在这里查看详情http://www.crocodella.com.br/2011/01/using-avplayer-to-play-background-music-from-library/ – 2011-08-12 01:00:20

2

您是否在info.plist中添加了所需的背景模式密钥... 如果不尝试添加此... 转到info.plist文件并单击add添加“Required back ground modes”点击一个小三角形和U将得到item0在增加“应用程序播放音频” ...... 这工作得很好......

〜Raviraja

+0

是的,我在我的问题中提到过。你会碰巧有我可以在我的模拟器上运行的包含正确设置的示例项目吗?谢谢。 – 2010-07-09 00:31:59

1

即使在设备上,这工作对我来说。

AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; 
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 
[audioPlayer play]; 

这和设置info.plist键以启用背景音频是需要在iPhone应用程序中启用背景音频播放。但是,如果要播放的音频文件的顺序一会又需要执行每个回放操作作为后台任务是这样的:

UIBackgroundTaskIdentifier bgTask = [[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:nil]; 

执行必要的操作:

[[UIApplication sharedApplication] endBackgroundTask:bgTask]; 
16

背景音频iPhone模拟器不支持。 来源:WWDC 2010,Session 109 - 采用多任务处理第2部分。