Ошибка 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
-
Я настраиваю режим AVAudioSessionModeDefault.
-
Alloc CXProvider и reportNewIncomingCallWithUUID
-
Используйте WebRTC, после ICEConnected, измените режим WebRTC на AVAudioSessionModeVoiceChat, тогда возникнет проблема с динамиком.
-
Позже я установил режим обратно в AVAudioSessionModeDefault, динамик работает хорошо.