Я создаю приложение CallKit, которое выполняет только исходящие звонки. Мы делаем свой собственный интерфейс, не используя встроенный пользовательский интерфейс. Мне нужно поместить на экран кнопку динамика, которая будет переключаться из режима динамика/без динамика.
Я следовал рекомендациям Apple и примеру кода CallKit, и, похоже, он работает достаточно хорошо.
Я не смог найти много информации о том, как переключаться в режим динамика и обратно. Я использую следующую функцию для изменения аудиомаршрута. У кого-нибудь есть опыт в этом? Будет ли это работать надежно?
func speaker(on: Bool) {
let audioSession = AVAudioSession.sharedInstance()
do {
// not sure I need this ...
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
if on {
// does this trigger a change to the audio route?
try audioSession.overrideOutputAudioPort(.speaker)
} else {
// is this how to switch back to the phone speaker?
try audioSession.overrideOutputAudioPort(.none)
}
} catch {
// Audio session change failure
print("failed to change speaker phone")
}
}