Я пишу приложение для своих собственных целей, целью которого является получение событий паузы воспроизведения независимо от того, что происходит в системе. Я получил очень много работы
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.togglePlayPauseCommand.isEnabled = true
commandCenter.togglePlayPauseCommand.addTarget { (MPRemoteCommandEvent) -> MPRemoteCommandHandlerStatus in
print("Play Pause Command")
return .success
}
commandCenter.nextTrackCommand.isEnabled = true
commandCenter.nextTrackCommand.addTarget { (MPRemoteCommandEvent) -> MPRemoteCommandHandlerStatus in
print("NextTrackCommand")
return .success
}
commandCenter.previousTrackCommand.isEnabled = true
commandCenter.previousTrackCommand.addTarget { (MPRemoteCommandEvent) -> MPRemoteCommandHandlerStatus in
print("previousTrackCommand")
return .success
}
commandCenter.playCommand.isEnabled = true
commandCenter.playCommand.addTarget { (MPRemoteCommandEvent) -> MPRemoteCommandHandlerStatus in
print("playCommand")
return .success
}
MPNowPlayingInfoCenter.default().playbackState = .playing
Большинство из этих методов есть, потому что, очевидно, вы не получите никаких уведомлений без реализации nextTrackCommand или previousTrackCommand или playCommand.
В любом случае, моя единственная проблема заключается в том, что как только вы откроете другое приложение, использующее звук, эти обработчики событий перестают вызываться, и я не могу найти способ обнаружить и исправить это. не похоже на работу. Любые идеи о том, как я могу получить события playpause независимо от того, в каком состоянии находится система?
Я бы хотел всегда иметь возможность прослушивать эти события ИЛИ получать информацию о том, когда кто-то другой взял контроль над аудио ? Возможно, даже сможете повторно подписаться на эти события паузы воспроизведения.