Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xcode swift 3锁屏遥控器不工作?_Swift_Xcode_Class - Fatal编程技术网

xcode swift 3锁屏遥控器不工作?

xcode swift 3锁屏遥控器不工作?,swift,xcode,class,Swift,Xcode,Class,当播放器处于活动状态且正在播放时,我试图从锁屏上捕捉播放/停止/下一个/上一个用户操作,以了解它是如何不工作的 类内MusicPlayerViewController:BaseViewController override func viewDidLoad() { super.viewDidLoad() do { UIApplication.shared.beginReceivingRemoteControlEvents() print("bb> Receivi

当播放器处于活动状态且正在播放时,我试图从锁屏上捕捉播放/停止/下一个/上一个用户操作,以了解它是如何不工作的

类内
MusicPlayerViewController:BaseViewController

override func viewDidLoad() {
    super.viewDidLoad()

do {
    UIApplication.shared.beginReceivingRemoteControlEvents()
     print("bb> Receiving remote control events\n")
 } catch {
     print("bb> Audio Session error.\n")
 }

let commandCenter = MPRemoteCommandCenter.shared()
    commandCenter.nextTrackCommand.isEnabled = true
    commandCenter.nextTrackCommand.addTarget(self, action: #selector(MusicPlayerViewController.nextTrackCommandSelector))

}

func nextTrackCommandSelector()
{
  print("omg")
}
在日志中我只能看到

bb> Receiving remote control events
同样在
AppDelegate.swift中

   override func remoteControlReceived(with event: UIEvent?) {

        print("remote::")


        guard let event = event else {
            print("no event\n")
            return
        }
        guard event.type == UIEventType.remoteControl else {
            print("received other event type\n")
            return
        }
        switch event.subtype {
        case UIEventSubtype.remoteControlPlay:
            print("received remote play\n")
        case UIEventSubtype.remoteControlPause:
            print("received remote pause\n")
        case UIEventSubtype.remoteControlTogglePlayPause:
            print("received toggle\n")
        case UIEventSubtype.remoteControlNextTrack:
            print("clicked next \n")
        case UIEventSubtype.remoteControlPreviousTrack:
            print("clicked Prev \n")
        default:
            print("received \(event.subtype) which we did not process\n")
        }
    }
和能力

我错过了什么?

几件事:

  • 您正在使用委托样式和MPRemoteCommandCenter样式的远程事件处理。选择一个,而不是两个,看看它们是否相互冲突。苹果建议使用MPRemoteCommandCenter样式,但如果您支持较旧的iOS版本,则可能需要坚持使用代理样式

  • 如果您选择使用委托样式,我记得您还必须成为第一响应者,才能开始接收远程控制事件

  • 无论您选择哪种类型的事件处理,您都必须在应用程序中播放音频,让系统知道如何将事件发送给您。锁屏(或音频控制中心)应将您的应用程序列在“正在播放”区域

  • 有几件事:

  • 您正在使用委托样式和MPRemoteCommandCenter样式的远程事件处理。选择一个,而不是两个,看看它们是否相互冲突。苹果建议使用MPRemoteCommandCenter样式,但如果您支持较旧的iOS版本,则可能需要坚持使用代理样式

  • 如果您选择使用委托样式,我记得您还必须成为第一响应者,才能开始接收远程控制事件

  • 无论您选择哪种类型的事件处理,您都必须在应用程序中播放音频,让系统知道如何将事件发送给您。锁屏(或音频控制中心)应将您的应用程序列在“正在播放”区域

  • 我找到了解决办法

    对于swift 3,我必须添加以下内容

    try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [])
         try! AVAudioSession.sharedInstance().setActive(true)
    
    我找到了解决办法

    对于swift 3,我必须添加以下内容

    try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [])
         try! AVAudioSession.sharedInstance().setActive(true)