Я новичок в Swift, и у меня есть AVPlayer, который отлично воспроизводится на определенном экране. Моя цель - воспроизвести тот же звук в режиме блокировки экрана. Пока это то, что я сделал, и код ниже. почему-то я вообще не вижу виджет плеера на экране блокировки. Что я делаю неправильно здесь.
class MyAudiosViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,AVAudioPlayerDelegate {
@IBAction func playButtonPressed(_ sender: Any) {
if(currentRowSelected != nil ){
if AudioPlayer.isPlaying() {
AudioPlayer.pause()
playButton.setImage(UIImage(named: "play_button"), for: UIControlState.normal)
} else {
AudioPlayer.play()
playButton.setImage(UIImage(named: "pause_button"), for: UIControlState.normal)
}
setUpBackgroundMode()
}else{
"Track is not selected from list"
}
}
}
extension MyAudiosViewController {
override func remoteControlReceived(with event: UIEvent?) {
if let receivedEvent = event {
if (receivedEvent.type == .remoteControl) {
switch receivedEvent.subtype {
case .remoteControlTogglePlayPause:
playButtonPressed(AudioPlayer.isPlaying())
case .remoteControlPlay:
playButtonPressed(AudioPlayer.player?.play())
case .remoteControlPause:
playButtonPressed(AudioPlayer.player?.pause())
case .remoteControlNextTrack:
print("next pressed")
case .remoteControlPreviousTrack:
print("previous pressed")
default:
print("received sub type \(receivedEvent.subtype) Ignoring")
}
}
}
}
func setUpBackgroundMode() {
if let positionSong = AudioPlayer.getPlayingIndex() {
let song = songDetailsArray[positionSong]
let songData = song.audioDetails
MPNowPlayingInfoCenter.default().nowPlayingInfo = [
MPMediaItemPropertyTitle: songData?.title ?? "",
MPMediaItemPropertyArtist: songData?.healerName ?? "",
MPMediaItemPropertyPlaybackDuration:
self.player?.currentItem?.asset.duration
]
UIApplication.shared.beginReceivingRemoteControlEvents()
becomeFirstResponder()
}
}
}