2012-09-11 105 views
0

我正在使用AVAudioPlayer實例播放音樂。一首歌曲結束後,使用NSURLConnection下載「播放列表」中的下一首歌曲。在iOS設備鎖定或應用程序處於後臺時啓動下載

當我卡:我希望能夠下載播放列表中的下一個音頻文件,並開始播放的背景,而手機被鎖定,或者當用戶使用其他應用程序。我該怎麼做呢?

我偶然發現了這篇文章:Play music in the background using AVAudioplayer,建議使用[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];,但是這似乎只允許音頻在後臺播放,不會啓動下載。

當然這是可能的,因爲潘多拉,Spotify的,別人也可以做到這一點...幫助!

回答

1

您應該請求系統,讓你在後臺運行,而你是下載的AudioFile。你可以通過使用UIApplication的beginBackgroundTaskWithExpirationHandler:方法來實現。一旦你下載了這個文件,你可以讓AVAudioPlayer播放你的文件。

+0

這會允許我下載多個文件嗎?意思是,如果用戶有3首歌曲排隊在他們的播放列表中,並且他們在所有3首歌曲的持續時間內都不解鎖電話,那麼所有3能夠在後臺下載嗎? – professormeowingtons

+0

全部取決於下載需要多長時間。您可以檢查UIApplication的屬性「backgroundTimeRemaining」。這通常是11分鐘(但將來會改變)。但是,通過您的第一個問題,您似乎可以保持在後臺,因爲您的應用程序將下載第一個文件並在下載第二個文件時播放它。 – J2theC

+0

是的,但我想關心的是,如果我們在這個播放列表中說100個音頻文件要下載,11分鐘後下載只是簡單地停下來。有沒有辦法解決? – professormeowingtons

0

你應該有蘋果文檔的多任務處理的讀取。

http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW3

你需要一個UIBackgroundModes鍵添加到您的info.plist音頻。這會阻止您的應用程序被掛起,然後所有正常的回調仍然會運行。

+0

我已經做到這一點 - 但問題是如何允許在後臺啓動的音頻文件下載。音頻已經在後臺播放了。 – professormeowingtons

相關問題