我正在创建一个音乐播放器iOS应用并从firebase获取数据。我可以在模拟器或iPhone中控制播放,暂停,下一个和上一个。耳机连接到设备播放时,下一个和上一个功能无法正常工作。 这是我使用过的代码;
func setupRemoteCommandCenter() {
// Get the shared MPRemoteCommandCenter
let commandCenter = MPRemoteCommandCenter.shared()
// Add handler for Play Command
commandCenter.playCommand.addTarget { event in
player?.play()
print("headset play")
return .success
}
// Add handler for Pause Command
commandCenter.pauseCommand.addTarget { event in
player?.pause()
print("headset pause")
return .success
}
// Add handler for Next Command
commandCenter.nextTrackCommand.addTarget { event in
return .success
}
// Add handler for Previous Command
commandCenter.previousTrackCommand.addTarget { event in
return .success
}
}
在setupRemoteCommandCenter
viewdidload
函数
答案 0 :(得分:1)
This document says要接收您需要的播放器事件通知
“正在播放应用程序”的定义很难确定,但似乎似乎是任何具有活动,不可混合的音频会话并正在播放音频的应用程序(或 >最近播放音频,这里似乎有一段短暂的宽限期。一种可能的不可混合的音频会话是:
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(AVAudioSessionCategoryPlayback)
try session.setActive(true)
} catch let err as NSError {
print("Error setting up non mixable audio session \(err)")
}
P.S。如果您希望在屏幕锁定时耳机控件可以正常工作(或者您希望锁屏控件能够正常工作),您需要将音频添加到后台模式,因为从技术上讲,如果屏幕被锁定,那么您的应用已经背景: