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)