音频播放锁定屏幕控制不在iPhone上显示

Mik*_*keG 5 audio media-player ios swift

我在我的iPhone 6s设备上使用iOS 10.2进行测试.

我正在播放流式音频,能够播放/暂停音频,跳过曲目等.我还启用了背景模式,音频在后台播放并继续正确播放播放列表.我唯一的问题是让锁屏控件显示出来.什么都没有显示......

在我的MainViewController的viewDidLoad()中,当我的应用程序启动时,我称之为...

 func setupAudioSession(){

   UIApplication.shared.beginReceivingRemoteControlEvents()


   do {
       try    AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.mixWithOthers)

       self.becomeFirstResponder()

       do {
           try AVAudioSession.sharedInstance().setActive(true)
                   print("AVAudioSession is Active")
       } catch let error as NSError {
                   print(error.localizedDescription)

       }
   } catch let error as NSError {
               print(error.localizedDescription)
   }
}
Run Code Online (Sandbox Code Playgroud)

在我开始播放音频之后,在我的AudioPlayer课程中,我打电话给...

func setupLockScreen(){
       let commandCenter = MPRemoteCommandCenter.shared()
       commandCenter.nextTrackCommand.isEnabled = true
       commandCenter.nextTrackCommand.addTarget(self, action:#selector(skipTrack))
       MPNowPlayingInfoCenter.default().nowPlayingInfo = [MPMediaItemPropertyTitle: "TESTING"]
}
Run Code Online (Sandbox Code Playgroud)

当我锁定iPhone然后再次点击电源按钮进入锁定屏幕时,根本不显示音频控件.好像没有播放音频,我只看到我正常的背景照片.此外,控制面板中不显示任何控件(在主屏幕上向上滑动,然后向左滑动到音乐控件所在的位置).

问题是因为我没有使用AVAudioPlayer或AVPlayer?但是,例如,Spotify如何使用他们自己的自定义音频播放器来显示锁定屏幕控件?感谢您的任何建议/帮助

Mik*_*keG 6

问题结果是这条线......

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.duckOthers)
Run Code Online (Sandbox Code Playgroud)

一旦我把它改成了

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [])
Run Code Online (Sandbox Code Playgroud)

一切正常.因此,似乎传入AVAudioSessionCategoryPlaybackOptions的任何参数都会导致锁屏控件无法显示.我也试过传入.mixWithOthers一个也导致锁定屏幕控制不显示