Переход к динамику и обратно с помощью CallKit

Я создаю приложение 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")
    }
}

person ryantxr    schedule 07.06.2017    source источник
comment
Вы имеете в виду, что у вас проблемы с пользовательским интерфейсом?   -  person engmahsa    schedule 11.06.2017
comment
Я могу справиться с пользовательским интерфейсом просто отлично. Я хочу знать, как сказать ему использовать разные динамики.   -  person ryantxr    schedule 29.06.2017
comment
Привет @ryantxr, у тебя есть решение, я тоже столкнулся с той же проблемой.   -  person MAhipal Singh    schedule 14.08.2017
comment
Я не. Оказывается, моему приложению это пока не нужно.   -  person ryantxr    schedule 14.08.2017
comment
Привет @ryantxr У вас есть решение для обновления пользовательского интерфейса кнопки динамика в обычном и выбранном режиме в Callkit?   -  person Madhu    schedule 09.02.2018
comment
У меня нет ответа для вас.   -  person ryantxr    schedule 10.02.2018


Ответы (1)


Вам нужно будет добавить следующее в конец вашего блока do: audioSession.setActive(true)

person Tim Lowes    schedule 18.11.2017