Все работает нормально, если мы запускаем приложение на переднем плане. Но возникает проблема, когда приложение ранее было убито и перезапущено путем получения уведомления PushKit на экране блокировки.
Когда приложение получает уведомление PushKit, мы отображаем пользовательский интерфейс CallKit. Это работает правильно. Пользователь может ответить на звонок и установить соединение через WebRTC. Но звука нет вообще.
Странно то, что если пользователь открывает приложение с экрана CallKit, нажав на значок приложения, звук запускается и работает должным образом. Похоже, проблема в конфигурации аудиосеанса. Возможно, по какой-то причине iOS не позволяет активировать нашу аудиосеанс.
Мы используем библиотеку Google WebRTC:
pod 'GoogleWebRTC', '1.1.26115'
Мы пробовали разные подходы:
Включение / выключение фонового звукового режима.
Настройка аудиосеанса до и после получения обратного вызова
didActivate
от делегата CallKit.Настройка аудиосеанса вручную и с использованием
RTCAudioSession.sharedInstance
из библиотеки WebRTC.Включение и отключение
RTCAudioSession.useManualAudio
.
Это сценарий, при котором мы сталкиваемся с проблемой:
Убейте приложение. Заблокируйте телефон.
Позвоните этому пользователю с другого телефона.
PushKit запускает приложение, приложение представляет экран CallKit, пользователь отвечает на звонок.
Соединение устанавливается правильно. Вызов активен, но на обоих концах нет звука.
Нажмите на значок приложения (самый нижний правый) на экране CallKit и разблокируйте телефон. Начнется звук.
Любая помощь приветствуется.
reportNewIncomingCall(with:update:completion:)
? - person Marco   schedule 28.03.2019