2012-01-09 8 views
5

Estoy probando un cliente de VoIP sip escrito por un desarrollador de aplicaciones de iPhone que usa PJSip. Yo personalmente he jugado un poco con el desarrollo de SIP, pero no soy un experto.Aplicación iPhone Voip - Hacer frente a la situación y mantener el ojo de lata nat vivo

Con nuestro softswitch VOIP (paquete Acme/Broadsoft), se ocupa de todas las gestiones Nat determinando dinámicamente el mejor tiempo de reinscripción para mantener el agujero de tinta Nat vivo en el dispositivo nat. Normalmente, cuando el iPhone está detrás de un NAT este tiempo es entre 60-90 segundos.

La aplicación Iphone está utilizando TCP y funciona felizmente con Backgrounding. Obviamente, el fondo es ideal para ahorrar batería. La llamada despierta el teléfono y puede escuchar la llamada.

El problema es que cuando la aplicación entra en modo de fondo, no tiene forma de mantener abierto el agujero de alfiler de Nat. Esto significa que el firewall siempre rechazará que nuevas llamadas entrantes lleguen a la aplicación Iphone una vez que se cierre el agujero. Esto tiene el efecto de que las llamadas entrantes funcionen en la aplicación durante unos minutos, luego no funcionen durante un período, y luego, cuando la aplicación sale de segundo plano y se vuelve a registrar, las llamadas entrantes vuelven a funcionar.

De acuerdo con la documentación de manzana: http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW3

Ellos tienen incorporado excepciones especiales para aplicaciones VoIP para backgrounding podemos: 1. tomas Configurar las aplicaciones de tal manera que pueden todavía manejar la mensajería entrante. Esto no ayuda, ya que los mensajes nunca llegarán a la aplicación si el agujero está cerrado. 2. Utilice un Keep alive, sin embargo, el tiempo mínimo es de 600 segundos. Esto también significa que el orificio se cerrará.

¿Existe alguna manera inteligente de que una aplicación envíe un mensaje de registro de Voip Sip, digamos cada 60 segundos y permanezca en segundo plano? ¿O puede la aplicación despertarse cada 60 segundos hacer un trabajo y luego cerrarla?

Estoy realmente perplejo en cuanto a si hay otras aplicaciones de sorbos en el mercado que han solucionado este problema.

+0

Hay aplicaciones en el mercado que han evitado este problema. Por ejemplo, la aplicación 3CX. –

+0

¿Obtuviste alguna solución para esto? –

Respuesta

-1

Se permiten mantener TCP siempre que el intervalo no sea demasiado corto, creo que esto debería mantener abierta la sesión de NAT. ¿Puede decirnos si ayuda o no?

0

Para solucionar esto es necesario que el Acme envíe TCP keepalives a los dispositivos registrados en él y establezca que caduque a al menos 600 s. Es posible que desee más porque el teléfono tardará un tiempo en volver a registrarse, por lo que algo así como 720s funcionaría mejor.

Esto debería mantener el agujero de NAT abierto si configura el intervalo keepailve lo suficientemente bajo, alrededor de 30 segundos más o menos. NAT debería permitir un intervalo más alto, pero eso podría requerir algunas pruebas.

Sé que ACME SBCs puede manejar esto.

Cuestiones relacionadas