如何控制音乐播放器的耳机?
How can i control my headset for my music player?
我正在创建一个音乐播放器 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
}
}
并在viewdidload
中调用setupRemoteCommandCenter
函数
This document says 要接收玩家事件通知,您需要
- 开始播放音频
- 成为"Now playing app"
"Now playing app" 的定义很难确定,但 似乎 是任何具有活动的 non-mixable 音频会话并且是正在播放音频(或者最近播放过音频,这里似乎有一个短暂的宽限期)。一种可能的 non-mixable 音频会话是:
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。如果您希望耳机控件在屏幕锁定时工作(或者如果您希望锁屏控件为此工作),您需要将音频添加到背景模式,因为从技术上讲,如果屏幕被锁定,那么您的应用程序有被背景化:
我正在创建一个音乐播放器 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
}
}
并在viewdidload
setupRemoteCommandCenter
函数
This document says 要接收玩家事件通知,您需要
- 开始播放音频
- 成为"Now playing app"
"Now playing app" 的定义很难确定,但 似乎 是任何具有活动的 non-mixable 音频会话并且是正在播放音频(或者最近播放过音频,这里似乎有一个短暂的宽限期)。一种可能的 non-mixable 音频会话是:
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。如果您希望耳机控件在屏幕锁定时工作(或者如果您希望锁屏控件为此工作),您需要将音频添加到背景模式,因为从技术上讲,如果屏幕被锁定,那么您的应用程序有被背景化: