2010-07-06 51 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部分。