Ошибка Callkit для громкоговорителей/как WhatsApp исправил это?

У меня есть приложение с функциональностью Callkit. Когда я нажимаю кнопку громкоговорителя, она мигает и оживляется в состоянии ВЫКЛ (иногда динамик устанавливается на LOUD, но значок все еще выключен). Когда я нажимаю на него несколько раз... ясно видно, что эта функциональность работает некорректно.

Однако у WhatsApp в начале громкоговоритель выключен, а после 3+ секунд он активирует его и его работу. Кто-нибудь сталкивался с чем-то похожим и может дать мне решение?

Видео-ссылка Youtube для демонстрации моей проблемы

Ответ 1

Существует метод обхода, предложенный инженером-яблоком, который должен исправить callkit, не активируя аудио-сессию правильно:

обходным решением было бы настроить аудиозапись приложения (вызов configureAudioSession()) ранее в жизненном цикле вашего приложения до того, как вызывается метод -provider:performAnswerCallAction:. Например, вы можете вызвать configureAudioSession() непосредственно перед вызовом -[CXProvider reportNewIncomingCallWithUUID:update:completion:], чтобы убедиться, что аудио-сессия полностью настроена до того, как сообщит CallKit о входящем вызове.

От: https://forums.developer.apple.com/thread/64544#189703

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

Ответ 2

Отправлено от ненормального поведения кнопки динамика на системном экране вызова

Та же проблема была и в предыдущих версиях. Так что это не новая проблема, возникающая в наборе вызовов. Эта проблема должна быть решена с iOS. У нас нет никакого контроля над этим.

Пожалуйста, зайдите на форум разработчиков Apple

Набор CallKit/обнаружения колонок

а также

[CALLKIT] аудиозапись не активируется?

Ответ 3

Может быть, вы можете установить режим AVAudioSessionModeDefault.

Когда я использую CallKit + WebRTC

  1. Я настраиваю режим AVAudioSessionModeDefault.

  2. Alloc CXProvider и reportNewIncomingCallWithUUID

  3. Используйте WebRTC, после ICEConnected, измените режим WebRTC на AVAudioSessionModeVoiceChat, тогда возникнет проблема с динамиком.

  4. Позже я установил режим обратно в AVAudioSessionModeDefault, динамик работает хорошо.