我的 ios 应用程序使用 AVQueuePlayer 播放音频。
播放/暂停控件在控制中心和 ios 锁定屏幕上正常工作,但不适用于从蓝牙设备调用的命令。例如,双击airpods或其他第三方蓝牙耳机时,我的应用程序中的回调永远不会被调用。
我在装有 iOS 15 的 iphone 8 plus 设备上运行。
在应用程序启动时,它会像这样设置音频会话:
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(.playAndRecord,
mode: .spokenAudio,
options: [
.allowBluetooth,
.defaultToSpeaker
])
try audioSession.setActive(true)
该应用程序侦听这样的播放/暂停事件。
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.playCommand.addTarget { event in
print("play")
return .success
}
commandCenter.pauseCommand.addTarget { event in
print("pause")
return .success
}
commandCenter.togglePlayPauseCommand.addTarget { event in
print("toggleplaypause")
return .success
}
通过所有蓝牙设备播放正常。在锁定屏幕或控制中心,播放/暂停会导致“播放”和“暂停”被打印出来。但是点击airpods时没有打印任何内容。(点击 airpods 在任何其他音频应用程序中都可以正常工作。)
有什么想法可能会丢失吗?