2016-09-24 28 views
3

有沒有辦法在應用程序處於後臺時獲取MPMusicPlayerControllerNowPlayingItemDidChange通知?MPMusicPlayerControllerNowPlayingItemDidChange在後臺

我有一個應用程序需要能夠暫停音樂,一旦歌曲在後臺或當屏幕鎖定時結束。我正在使用systemMusicPlayer播放音樂。

我已經嘗試添加音頻背景功能,並在我的applicationDidEnterBackground中包含致電beginBackgroundTask的電話,但該功能無法長時間工作。

+0

如何使用觀察者? – KennyVB

+0

@KennyVB,能夠在後臺工作或在手機被鎖定的情況下無限期工作嗎? – WMios

+0

它會工作,直到你停止觀察... 你可以把一個觀察者,當它開始播放,並在它完成時停止它不會破壞你的應用程序 – KennyVB

回答

2

在後臺時,您的應用程序可能隨時被殺害,因此您不想依賴於在後臺執行操作。

我的理解是,當你的應用程序轉到背景時,當前播放的音樂會繼續播放,但在當前播放的歌曲播放結束後停止播放。

MPMusicPlayerController.systemMusicPlayer()正在播放歌曲隊列(「播放列表」)。所以我會嘗試在applicationWillResignActive()中操縱queue,以便在當前播放的歌曲之後沒有歌曲。

我沒有測試這個,我不確定這是否可以通過公共API。

+0

你是說當應用程序轉到後臺(或設備鎖定)暫停/停止音樂?爲了讓應用必須保持開放狀態直到音樂結束?而且沒有辦法像問題中描述的那樣去做(如果是這種情況,那麼可以)? – WMios

+0

已更新的答案。 – shallowThought

+0

這沒有幫助。我的應用程序需要播放一定量的歌曲,然後在完成時停下來。我希望在應用程序處於後臺時能夠收到通知,以便知道何時停止。 – WMios