Ich baue eine Musik-Player-App, und alles funktioniert gut. Ich habe den System-Musik-Player bisher benutzt, möchte aber jetzt stattdessen einen Anwendungs-Music-Player verwenden, und da stolpert es um Probleme - für mein Leben kann ich nicht herausfinden, wie ich mein Gerät bekomme play/pause Callback, um von der iOS-Zentrale aus angerufen zu werden. Hier ist der Code, den ich in meinem Haupt-View-Controller verwenden bin:Play/Pause Callback wird nicht aufgerufen, wenn MPRemoteCommandCenter verwendet
override func viewDidLoad() {
super.viewDidLoad()
self.musicPlayer = MPMusicPlayerController.applicationMusicPlayer()
self.registerForMediaPlayerNotifications()
UIApplication.sharedApplication().beginReceivingRemoteControlEvents()
let commandCenter = MPRemoteCommandCenter.sharedCommandCenter()
commandCenter.previousTrackCommand.enabled = false
commandCenter.previousTrackCommand.addTarget(self, action: "previousTrack")
commandCenter.nextTrackCommand.enabled = false
commandCenter.nextTrackCommand.addTarget(self, action: "nextTrack")
commandCenter.togglePlayPauseCommand.enabled = true
commandCenter.togglePlayPauseCommand.addTarget(self, action: "playOrPauseMusic")
commandCenter.pauseCommand.addTarget(self, action: "playOrPauseMusic")
commandCenter.pauseCommand.enabled = true
commandCenter.playCommand.addTarget(self, action: "playOrPauseMusic")
commandCenter.playCommand.enabled = true
[...]
}
func previousTrack() {
}
func nextTrack() {
}
func playOrPauseMusic() {
print("playOrPause")
}
Das einzige, was mir einfällt, ist, dass Ihr Objekt nicht mehr existiert, wenn der Rückruf kommt. Speichern Sie das Objekt irgendwo? – fishinear
Sie meinen das CommandCenter-Objekt? Nein, ich speichere das nicht irgendwo, da ich annahm, dass es eine globale geteilte Instanz sein würde, für die ich nur die Referenz brauche, um Ziele zu setzen/aktivieren/deaktivieren usw. Ich kann es versuchen ... – dflachbart
Nein, meine ich Selbst, das Objekt, das diesen Code enthält. Setzen Sie einen Haltepunkt in sein 'dealloc', um zu sehen, ob es bereinigt wird. – fishinear