2014-10-14 14 views
8

Ho un'app musicale scritta in swift, sto usando MPMusicPlayerController.systemMusicPlayer, ho anche provato applicationMusicPlayer.rileva le notifiche MPMusicPlayerController in background

La musica suona in background come previsto.

Quando la mia app è in background, ho bisogno di notifiche sullo stato di riproduzione, quindi la mia app può determinare il prossimo brano da riprodurre.

Ho il seguente nel mio metodo viewDidLoad. Il mio metodo "playbackChanged" viene chiamato con tutti gli stati corretti se la mia applicazione è in primo piano.

NSNotificationCenter.defaultCenter().addObserver(
     self, 
     selector: "playbackChanged", 
     name:MPMusicPlayerControllerPlaybackStateDidChangeNotification, 
     object: MPMusicPlayerController.systemMusicPlayer() 
    ) 

Non ottengo nulla se la mia app è in background. Ricordo con iOS 7 e utilizzando iPodMusicPlayer che ora è deprecato in iOS 8, otterrei correttamente queste notifiche sullo sfondo.

Qualche idea che sta andando storto?

+0

Hai avuto ulteriori informazioni qui? – newenglander

risposta

0

Chiamare beginGeneratingPlaybackNotifications() sul MusicPlayer sembrava funzionare per me.

MPMusicPlayerController.systemMusicPlayer().beginGeneratingPlaybackNotifications() 
NSNotificationCenter.defaultCenter().addObserver(
    self, 
    selector: "playbackChanged", 
    name:MPMusicPlayerControllerPlaybackStateDidChangeNotification, 
    object: MPMusicPlayerController.systemMusicPlayer() 
) 

UPDATE: Purtroppo MPMusicPlayerNotifications non funziona in modo affidabile in background.

+0

sullo sfondo? – evenodd

+0

Ho fatto più test e, sfortunatamente, una volta che l'app è stata sospesa, non eseguirà il codice finché non sarà di nuovo attivo. Da quello che ho letto le notifiche di MPMusicPlayer non funzionerà in background. Ora AVPlayer esegue il codice in background e funziona con gli elementi della libreria di iPod, ma è più complicato da configurare. –