Прием VoIP-звонков, когда приложение находится в фоновом режиме в IOS - PullRequest
4 голосов
/ 22 сентября 2011

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

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

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

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

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

Кажется, что розетка все еще жива, если я звоню на сотовый телефон, когда приложения нет на переднем плане, ничего не происходит, но если я сам запускаю приложение, звонок автоматически обнаруживается,

Спасибо:)

Ответы [ 2 ]

4 голосов
/ 27 сентября 2011

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

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

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

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

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

0 голосов
/ 23 сентября 2011

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

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

...