Прием voip-звонков, когда приложение находится в фоновом режиме в ios

Я думаю, что у меня есть все требования, чтобы иметь «живой» сокет, пока приложение находится в фоновом режиме. То есть:

  • В моем приложении есть voip и аудио в качестве фоновых режимов.
  • Я использую PJSIP в качестве библиотеки SIP, которая должна использовать CFReadStreams с включенным свойством «Запуск в фоновом режиме».
  • Приложение использует TCP для установления соединения с SIP-сервером.

Когда приложение отправляется в фоновый режим, оно добавляет фоновый обработчик, который отправляет сообщение «keepAlive» каждый период времени.

Похоже, что keepAlive работает. Если я проверю журналы на сервере, я увижу, как приходят сообщения, даже когда приложение не находится на переднем плане.

Проблема (и вопрос) в том, что я не получаю звонки, пока приложение находится в фоновом режиме.

Вроде сокет еще жив, если звоню на мобильник пока приложения нет на переднем плане ничего не происходит, а если запускаю приложение сам, то звонок определяется автоматически.

Спасибо :)


person HyLian    schedule 22.09.2011    source источник
comment
Я получаю ту же проблему, как вы ее решили. Не могли бы вы мне помочь.   -  person MaxEcho    schedule 21.01.2014
comment
Как получить оповещение о входящем звонке или просмотреть ?? Пожалуйста, помогите мне!   -  person Devang Goswami    schedule 20.04.2015


Ответы (2)


Мы нашли проблему.

Учитывая текущую конфигурацию, Сервер использовал другое соединение для отправки запроса INVITE из начального сокета TCP, используемого с телефона для отправки начального запроса REGISTER.

Поскольку два сокета были разными, операционная система не разбудила приложение.

Если вы настроите сервер (в нашем случае Kamailio) на повторное использование начального сокета, который телефон использовал для отправки первого REGISTER, он будет работать без проблем.

По умолчанию кажется, что SIP-серверы создают новые сокеты для каждого запроса INVITE, который они хотят отправить на телефон. Эта ситуация является проблемой для фоновой модели iphone.

person HyLian    schedule 27.09.2011

Чтобы еще раз проверить, вы читали это: http://trac.pjsip.org/repos/wiki/Getting-Started/iPhone#UnabletoacceptincomingcallinbackgroundmodeiOS4

Кроме того, попробуйте последнюю ветку 1.x из репозитория Subversion, в поддержку iOS было внесено несколько исправлений.

person Perry Ismangil    schedule 22.09.2011
comment
Спасибо за ответ. Я дважды проверил эти 4 точки и все еще безуспешно :( - person HyLian; 23.09.2011
comment
Привет @Perry Ismangil Пожалуйста, ответьте stackoverflow.com/questions/58914707/ - person Paresh. P; 18.11.2019