iOS 4: Compilar PJSIP en modo TCP

¿Cómo compilar la biblioteca PJSIP en modo TCP para iPhone?

Tengo los pasos, pero no sé qué archivos necesito modificar.

Para habilitar la compatibilidad multitarea de iOS, establezca PJ_IPHONE_OS_HAS_MULTITASKING_SUPPORT en 1. Luego, la aplicación puede usar la API pj_activesock_set_iphone_os_bg() para establecer la configuración del modo de fondo de iOS. Establecer el valor en 1 permitirá que el socket activo de TCP reciba datos entrantes cuando la aplicación está en segundo plano. El valor predeterminado de esta configuración es PJ_ACTIVESOCK_TCP_IPHONE_OS_BG. De manera predeterminada, ambas configuraciones están habilitadas en iOS 4 cuando ejecuta configure-iphone

¿Alguien puede decir en qué archivos se deben realizar cambios para compilar PJSIP lib en modo TCP?

Cualquier ayuda es muy apreciada.

preguntado el 14 de mayo de 12 a las 12:05

pjsip 1.x o pjsip 2.x? ¿Quieres usar pjsua para construir una aplicación o quieres ir más abajo? -

1 Respuestas

pjsip 1.x o pjsip 2.x? ¿Quieres usar pjsua para construir una aplicación o quieres ir más abajo?

Si desea utilizar TCP, su servidor/proxy SIP también debería admitirlo (hay algunos servidores SIP que no admiten TCP correctamente).

Para obtener el soporte de TCP, no tiene que hacer nada especial (1.x) en el momento de la compilación, pero debe crear su uri de registro de esta manera:

"sip:username@server;transport=TCP"

contestado el 16 de mayo de 12 a las 09:05

Es pjsip 1.x y sí, nuestro servidor admite conexión TCP. Pero, ¿es este el único cambio que hay que hacer? ¿No necesita hacer esos ajustes y luego compilar PJSIP? - Shahil

para mí eso fue suficiente, pero estoy usando solo llamadas pjsua (pjsua es parte de pjsip). Tienes los pasos aquí: trac.pjsip.org/repos/wiki/Getting-Started/iPhone - alinoz

hay una cosa más a la que debe prestar atención, el servidor sip debe responder al cliente pjsip (que se ejecuta en iOS) en el mismo puerto en el que recibió el mensaje de registro. Si esto no sucede, se desconectará cuando esté en modo de fondo. También ayudará si su servidor puede enviar paquetes TCP keepalive al cliente. Como recuerdo, estas son las cosas más importantes que debe tener en cuenta. - alinoz

Lo intenté y funcionó bien. pero aún no puedo recibir llamadas en segundo plano después de 6 minutos. - Shahil

si pudiera recibir una llamada en segundo plano, eso significa que está utilizando el TCP. Pero puede haber otros problemas como: ¿qué valor has usado para reg_timeout? ¿Su servidor está en la red interna o fuera? ¿Usas un controlador de borde de sesión? - alinoz

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.