2014-10-14 11 views
8

Ich habe eine Musik-App in Swift geschrieben, ich benutze MPMusicPlayerController.systemMusicPlayer, auch ausprobiert ApplicationMusicPlayer.erkennen MPMusicPlayerController Benachrichtigungen im Hintergrund

Die Musik spielt wie erwartet im Hintergrund.

Wenn meine App im Hintergrund ist, benötige ich Benachrichtigungen zum Ändern des Wiedergabezustands, damit meine App den nächsten Titel bestimmen kann.

Ich habe das folgende in meiner ViewDidLoad Methode. Meine Methode "playbackChanged" wird mit allen korrekten Zuständen aufgerufen, wenn meine Anwendung im Vordergrund ist.

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

Ich bekomme nichts, wenn meine App im Hintergrund ist. Ich erinnere mich an iOS 7 und mit dem iPodMusicPlayer, der jetzt in iOS 8 veraltet ist, würde ich diese Benachrichtigungen im Hintergrund korrekt erhalten.

Irgendwelche Ideen was schief geht?

+0

Sind Sie hier weiter gekommen? – newenglander

Antwort

0

Calling beginGeneratingPlaybackNotifications() auf dem MusicPlayer schien für mich zu arbeiten.

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

UPDATE: Leider im Hintergrund MPMusicPlayerNotifications nicht zuverlässig arbeiten.

+0

im Hintergrund auch? – evenodd

+0

Ich habe mehr Tests gemacht und leider, sobald die App gesperrt ist, wird Code erst wieder aktiv, wenn er aktiv ist. Von dem, was ich gelesen habe, funktionieren MPMusicPlayer Benachrichtigungen nicht im Hintergrund. Jetzt führt AVPlayer Code im Hintergrund aus und arbeitet mit iPod-Bibliothekselementen, aber es ist komplizierter einzurichten. –

Verwandte Themen