一旦屏幕在实际设备中被锁定,LockScreen Player就不会出现。

我是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() } } } 

试试这个并查看这个演示

在playerviewcontroller中声明此变量

 var audioSession = AVAudioSession.sharedInstance() 

viewDidiLoad添加此代码

  try! self.audioSession.setCategory(AVAudioSessionCategoryPlayback) try! self.audioSession.setActive(true) UIApplication.shared.beginReceivingRemoteControlEvents() self.becomeFirstResponder() 

将数据传递给此函数或您的函数

 var nowPlayingInfoCenter = MPNowPlayingInfoCenter.default() var remoCommandCenter = MPRemoteCommandCenter.shared() func updateNowPlayingInfo(trackName:String,artistName:String,img:UIImage) { var art = MPMediaItemArtwork(image: img) if #available(iOS 10.0, *) { art = MPMediaItemArtwork(boundsSize: CGSize(width: 200, height: 200)) { (size) -> UIImage in return img } } nowPlayingInfoCenter.nowPlayingInfo = [MPMediaItemPropertyTitle: trackName, MPMediaItemPropertyArtist: artistName, MPMediaItemPropertyArtwork : art] remoCommandCenter.seekForwardCommand.isEnabled = false remoCommandCenter.seekBackwardCommand.isEnabled = false remoCommandCenter.previousTrackCommand.isEnabled = false remoCommandCenter.nextTrackCommand.isEnabled = false remoCommandCenter.togglePlayPauseCommand.isEnabled = false } 

当你加载新歌时调用上面的function。

  func loadNewSong() { //your audio player code. updateNowPlayingInfo(trackName:"just Like that", artistName:"LeoJam",img:UIImage(string:"img")!) }