我正在制作一个iOS无线电应用程序。我希望能够使用Siri暂停和播放,一旦它已经在播放(Siri不需要启动应用程序,只要控制音频,一旦它已经启动)。现在,“暂停”从我的手机(但不是从我的手表)在iOS工作,但我不能让它“播放”,一旦它暂停,即使我仍然看到我的锁定屏幕上的播放器。锁定屏幕控制在点击时工作良好。
以下是一些可能相关的代码:
func setupRemoteCommandCenter() {
let commandCenter = MPRemoteCommandCenter.shared()
// MARK: PLAY/PAUSE
commandCenter.togglePlayPauseCommand.addTarget { event in
self.togglePlayPause()
return .success
}
// MARK: Skip
func skipBackward(_ event: MPRemoteCommandEvent) -> MPRemoteCommandHandlerStatus {
guard let command = event.command as? MPSkipIntervalCommand else {
return .noSuchContent
}
goBackward15()
return .success
}
let skipBackwardCommand = commandCenter.skipBackwardCommand
skipBackwardCommand.isEnabled = !playingLivestream
skipBackwardCommand.addTarget(handler: skipBackward)
skipBackwardCommand.preferredIntervals = [-15]
func skipForward(_ event: MPRemoteCommandEvent) -> MPRemoteCommandHandlerStatus {
guard let command = event.command as? MPSkipIntervalCommand else {
return .noSuchContent
}
goForward30()
return .success
}
let skipForwardCommand = commandCenter.skipForwardCommand
skipForwardCommand.isEnabled = !playingLivestream
skipForwardCommand.addTarget(handler: skipForward)
skipForwardCommand.preferredIntervals = [30]
}
@objc func handleInterruption(notification: Notification) {
guard let userInfo = notification.userInfo,
let typeValue = userInfo[AVAudioSessionInterruptionTypeKey] as? UInt,
let type = AVAudioSession.InterruptionType(rawValue: typeValue) else {
return
}
if type == .began {
print("Interruption began")
// Interruption began, take appropriate actions
}
else if type == .ended {
if let optionsValue = userInfo[AVAudioSessionInterruptionOptionKey] as? UInt {
let options = AVAudioSession.InterruptionOptions(rawValue: optionsValue)
if options.contains(.shouldResume) {
// Interruption Ended - playback should resume
print("Interruption Ended - playback should resume")
play()
} else {
// Interruption Ended - playback should NOT resume
print("Interruption Ended - playback should NOT resume")
playerPaused = true
}
}
}
}谢谢。
发布于 2020-04-23 02:15:49
我注意到您在命令中心实现了playpause,但没有实现play或pause。你可能需要他们三个人。
https://stackoverflow.com/questions/61365219
复制相似问题