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