Buduję aplikację odtwarzacza muzyki i wszystko działa poprawnie. Do tej pory używałem systemowego odtwarzacza muzycznego, ale teraz chcę przełączyć się na używanie odtwarzacza muzyki z aplikacji, i właśnie tam napotykam na problemy - na całe życie nie mogę wymyślić, jak zdobyć mój komputer. odtworzyć/wstrzymać wywołanie zwrotne do wywołania z centrum sterowania iOS. Oto kod używam w moim głównym kontrolerem Widok:Odtwarzanie/wstrzymywanie wywołania zwrotnego nie jest wywoływane podczas używania 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")
}
Jedyne, co mogę wymyślić, to to, że obiekt nie istnieje, gdy przychodzi wywołanie zwrotne. Czy gdzieś przechowujesz obiekt? – fishinear
Masz na myśli obiekt commandCenter? Nie, nie przechowuję tego nigdzie, ponieważ zakładałem, że będzie to jakaś globalna współużytkowana instancja, dla której potrzebuję tylko odniesienia do ustawiania celów/włączania/wyłączania itd. Mogę spróbować ale ... – dflachbart
Nie, mam na myśli self, obiekt, który zawiera ten kod. Umieść punkt przerwania w jego 'dealloc', aby zobaczyć, czy zostanie wyczyszczony. – fishinear