Sto costruendo un'app di lettore musicale e tutto funziona correttamente. Finora ho usato il riproduttore musicale di sistema, ma ora voglio passare a utilizzare un lettore musicale per applicazioni, ed è lì che mi imbatto in problemi - per la vita di me non riesco a capire come ottenere il mio play/pause callback da chiamare dal centro di controllo iOS. Ecco il codice che sto utilizzando nel mio controller vista principale:Riproduzione/Pausa La richiamata non viene chiamata quando si utilizza MPRemoteCommandCenter
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")
}
L'unica cosa che posso pensare è che il tuo oggetto non esiste più quando arriva la richiamata. Conservi l'oggetto da qualche parte? – fishinear
Intendi l'oggetto commandCenter? No, non lo sto memorizzando da nessuna parte, perché ho pensato che sarebbe stata un'istanza globale condivisa per la quale ho solo bisogno del riferimento per impostare obiettivi/abilitare/disabilitare ecc. Posso provarlo però ... – dflachbart
No, intendo auto, l'oggetto che contiene questo codice. Metti un breakpoint nel suo 'dealloc' per vedere se viene pulito. – fishinear