2012-01-09 2 views
5

Я тестирую клиент Voip sip, написанный разработчиком приложения iphone, который использует PJSip. Я лично сам играл с разработкой SIP, но не эксперт.Iphone Voip app - Backgrounding and keep nat pinhole alive

С помощью нашего софтсвитча VOIP (пакет Acme/Broadsoft) он заботится обо всех методах обработки Nat, динамически определяя лучшее время перерегистрации, чтобы сохранить живое пятно Nat на устройстве nat. Обычно, когда iphone стоит за NAT, это время составляет 60-90 секунд.

Приложение Iphone использует TCP и с радостью работает с Backgrounding. Очевидно, что фоновое изображение идеально подходит для экономии заряда батареи. Звонок пробуждает телефон, и вы можете прослушивать вызов.

Проблема заключается в том, что, когда приложение переходит в фоновый режим, у него нет возможности открыть открытку Nat Pinhole. Это означает, что брандмауэр всегда будет отклонять новые входящие вызовы от доступа к приложению Iphone после закрытия отверстия. Это влияет на входящие звонки, работающие в приложении в течение нескольких минут, а затем не работает в течение определенного периода времени, а затем, когда приложение выходит из фона и регистрируется снова, входящие вызовы снова работают.

Согласно документации Apple: http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW3

Они имеют встроенный специальные исключения для Voip приложений для фоновых мы можем: 1. Настройка приложение сокетов таким образом, что они все еще могут обрабатывать входящие сообщения. Это не помогает, так как обмен сообщениями никогда не будет достигнут приложения, если фишка будет закрыта. 2. Используйте Keep Keep, однако минимальное время составляет 600 секунд. Это также означает, что отверстие будет закрыто.

Есть ли какой-нибудь умный способ, когда приложение может отправить сообщение регистрации SIP Voip, скажем, каждые 60 секунд или около того, оставаясь в фоновом режиме. Или приложение может просыпаться каждые 60 секунд, чтобы выполнить некоторую работу, а затем закрыть.

Im действительно озадачен тем, есть ли на рынке другие приложения sip, которые обошли эту проблему.

+0

На этой проблеме есть приложения, которые уже работали над этой проблемой. Например, приложение 3CX. –

+0

У вас есть решение для этого? –

ответ

-1

Поддерживаемые права доступа к TCP разрешены, если интервал не слишком короткий, я думаю, что это должно поддерживать открытый сеанс NAT. Можете ли вы сказать нам, помогает ли это или нет?

0

Для решения этого вопроса необходимо, чтобы Acme отправляла TCP keepalives на зарегистрированные на него устройства и устанавливала срок действия не менее 600 с. Вы можете захотеть этого выше, потому что у телефона потребуется некоторое время для повторной регистрации, поэтому что-то вроде 720s будет работать лучше.

Это должно привести к тому, что открытая крышка NAT будет открыта, если вы установите интервал keepailve достаточно низким, около 30 секунд или около того. NAT должен допускать более высокий интервал, но для этого может потребоваться некоторое тестирование.

Я знаю, что ACME SBC могут справиться с этим.