remoteControlReceived(带有事件:UIEvent?)未触发
remoteControlReceived(with event: UIEvent?) Doesn't triggered
我有音频 recording/playing 应用程序。但是我想暂停播放,当用户使用常规有线 iPhone 耳机上的 play/pause 按钮时。
所以我实现了远程事件的处理:
// MARK: Overrides
internal extension AppDelegate {
override func remoteControlReceived(with event: UIEvent?) {
super.remoteControlReceived(with: event)
/* some other logic */
}
}
然后我在application: didFinishLaunchingWithOptions:
开始接收远程事件:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
application.beginReceivingRemoteControlEvents()
becomeFirstResponder()
/* some other logic */
return true
}
但无论如何 remoteControlReceived(with event: UIEvent?)
永远不会被触发。
我也试过 MPRemoteCommandCenter:
MPRemoteCommandCenter.shared().togglePlayPauseCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
return .success
}
没有触发。
Swift 或 objective-c 已接受答案:)
怎么了?或者我应该在 .plist 中添加一些东西吗?
使用此代码完成您的工作。可以找到应用程序的文档here
MPRemoteCommandCenter.sharedCommandCenter().togglePlayPauseCommand.addTarget(self, action: #selector(togglePlayStop))
func togglePlayStop(){
//isPlaying = !isPlaying
}
好的,我找到了原因....我正在使用我的应用程序将它的声音与其他应用程序混合,所以我正在使用 mixWithOthers
选项激活音频会话:
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [.mixWithOthers])
但是,如果我使用 mixWithOthers
,应用会停止接收远程事件。这意味着,如果我想从耳机接收 toggle play/pause
事件,我不能使用此选项:
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
这很奇怪,但这就是我们所拥有的。所以就我而言,我不能使用耳机按钮:(
我有音频 recording/playing 应用程序。但是我想暂停播放,当用户使用常规有线 iPhone 耳机上的 play/pause 按钮时。 所以我实现了远程事件的处理:
// MARK: Overrides
internal extension AppDelegate {
override func remoteControlReceived(with event: UIEvent?) {
super.remoteControlReceived(with: event)
/* some other logic */
}
}
然后我在application: didFinishLaunchingWithOptions:
开始接收远程事件:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
application.beginReceivingRemoteControlEvents()
becomeFirstResponder()
/* some other logic */
return true
}
但无论如何 remoteControlReceived(with event: UIEvent?)
永远不会被触发。
我也试过 MPRemoteCommandCenter:
MPRemoteCommandCenter.shared().togglePlayPauseCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
return .success
}
没有触发。
Swift 或 objective-c 已接受答案:)
怎么了?或者我应该在 .plist 中添加一些东西吗?
使用此代码完成您的工作。可以找到应用程序的文档here
MPRemoteCommandCenter.sharedCommandCenter().togglePlayPauseCommand.addTarget(self, action: #selector(togglePlayStop))
func togglePlayStop(){
//isPlaying = !isPlaying
}
好的,我找到了原因....我正在使用我的应用程序将它的声音与其他应用程序混合,所以我正在使用 mixWithOthers
选项激活音频会话:
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [.mixWithOthers])
但是,如果我使用 mixWithOthers
,应用会停止接收远程事件。这意味着,如果我想从耳机接收 toggle play/pause
事件,我不能使用此选项:
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
这很奇怪,但这就是我们所拥有的。所以就我而言,我不能使用耳机按钮:(