Обрабатывать команды воспроизведения / паузы с AirPods во время вызова

#objective-c #swift #callkit #mpremotecommandcenter

#objective-c #swift #callkit #mpremotecommandcenter

Вопрос:

Есть ли какой-либо способ обработать команду гарнитуры, оставаясь в аудио / видеозвонке, исходящем из того же приложения?

Я работаю над приложением, которое использует CallKit для совершения звонков, и недавно я получил задание разрешить отключение звука при двойном нажатии пользователем AirPods (команда next track). В настоящее время любое действие приведет к завершению вызова, и я не смог найти обходной путь для изменения этого поведения. То же самое происходит с FaceTime и собственными вызовами.

До сих пор я пытался использовать MPRemoteCommandCenter для ответа на удаленные команды, например

 import MediaPlayer
 
let remoteCommandCenter = MPRemoteCommandCenter.shared()
Log.i("Setting up a remote command event handler.") 
remoteCommandCenter.nextTrackCommand.addTarget { (action: MPRemoteCommandEvent) in
  Log.i("Detected nextTrackCommand: (action)") // Never is printed
  return .success
}
remoteCommandCenter.nextTrackCommand.isEnabled = true
assert(audioSession.category == .playAndRecord)
  

Все мои идеи потерпели неудачу, поскольку обратный вызов не был вызван. На данный момент я начинаю думать, что это аппаратное ограничение.