Я использую класс MPVolumeView для переключения между аудиовыходами.В iPhone у вас есть 2 опции при запуске (iPhone и динамик), а в iPad у вас есть только 1 опция (динамик)
Но при подключении наушников на iPad не только опции динамика, но и наушники.
(в iPhone все работает хорошо)
Установить MPVolumeView:
private func setUI(){
let myVolumeView = MPVolumeView(frame: self.speakerButton.bounds)
myVolumeView.showsVolumeSlider = false
myVolumeView.setRouteButtonImage(nil, for: .normal)
self.speakerButton.addSubview(myVolumeView)
}
Сессия сборки:
try session.setPreferredSampleRate(Double(DefaultAudioDevice.kSampleRate))
try session.setPreferredIOBufferDuration(0.01)
let audioOptions = AVAudioSessionCategoryOptions.allowBluetooth.rawValue
try session.setCategory(AVAudioSessionCategoryPlayAndRecord, mode: AVAudioSessionModeVoiceChat, options: AVAudioSessionCategoryOptions(rawValue: audioOptions))
try session.setActive(true)
try session.overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
Я пытаюсь: - Добавить AVAudioSessionCategoryOptions.defaultToSpeaker - изменить на AVAudioSessionCategoryPlayAndRecord - удалить session.overrideOutputAudioPort (AVAudioSessionPortOverride.speaker)
Параметр динамика никогда не отображается на iPad.Только на iPhone