Sip.js: Soporte móvil

Creado en 5 jun. 2014  ·  26Comentarios  ·  Fuente: onsip/SIP.js

Este es un problema general para discutir el soporte móvil para SIP.js. Ver https://github.com/alongubkin/phonertc/issues/7

enhancement question

Comentario más útil

También terminé escribiendo un SDH personalizado para interactuar cuidadosamente con SIP. [email protected] con la implementación de WebRTC de cordova / iOS proporcionada. Me permitió resolver un problema en el que cordova se quejaba del argumento de RTCPeerConnection.setLocalDescription () & setRemoteDescription ().

Y lo he puesto a disposición como una biblioteca npm de acceso público:
https://github.com/WesUnwin/cordova-ios-session-description-handler

Este también puede ser un ejemplo útil de cómo escribir SDH personalizados (además del SDH predeterminado dentro de la biblioteca SIP.js, que también me pareció un punto de partida útil). ¡Espero que esto ayude a alguien!

Todos 26 comentarios

Gracias por abrir este Joseph. El caso de uso es una aplicación multiplataforma (Web, iOS, Android) que admite llamadas SIP. He estado trabajando en un complemento de Phonegap para PJSip, pero está agregando una capa adicional de complejidad que podría eliminarse si pudiéramos hacer que WebRTC funcione en iOS y Android.

¿Crees que vale la pena buscar algo como PhoneRTC para este caso de uso?

Eche un vistazo aquí a mi respuesta aquí: https://github.com/alongubkin/phonertc/issues/7

No creo que PhoneRTC en su estado actual funcione con SIP.js. Sin embargo, lo que sí proporciona es un buen punto de partida en el que se encuentra el desarrollo móvil.

Para iOS, pude volver a compilar las bibliotecas WebRTC (con SSL) y ahora estoy trabajando en la creación de una capa Obj-C para exponer las funciones WebRTC necesarias a SIP.js. Mi objetivo aquí sería conseguir que SIP.js e iOS puedan realizar llamadas de audio WebRTC.

Una vez que la funcionalidad de audio sea sólida, comenzaré a trabajar para agregar video. Mi idea para el video es tener una función que tome la identificación de un elemento en la página y la pase a Obj-C. Luego, haga que el código nativo busque ese elemento en la página y coloque un elemento de video nativo sobre él. Creo que probablemente crearía la mejor experiencia de usuario. Todavía estoy abierto a otras ideas sobre cómo manejar el video.

@lylepratt , solo quería mencionar que aunque la compatibilidad con iOS está en proceso, puedes tener compatibilidad con Android simplemente visitando el sitio web de la aplicación . Eche un vistazo al teléfono de demostración SIP.js para ver un ejemplo básico. Si realmente desea tener una aplicación de Android, puede usar Crosswalk para agrupar su aplicación web junto con un WebView habilitado para WebRTC.

@lylepratt , aquí hay un tutorial básico para usar Crosswalk con SIP.js, si está interesado en eso.

Si desea integrar los complementos de Cordova en su aplicación, puede usar Crosswalk Cordova para llevar la funcionalidad WebRTC a las aplicaciones de Android generadas por Cordova. Después de comenzar con la plantilla HelloWorld de Crosswalk Cordova , pude crear la aplicación de teléfono de demostración SIP.js reemplazando el directorio assets / www con los activos del teléfono de demostración y agregando los siguientes permisos a AndroidManifest.xml:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

Gracias por la información Joseph. Desafortunadamente, solo podemos perseguir algo que
también funciona en iOS.

Según estas discusiones, parece que tendremos que continuar
con un complemento PJSip para hacerlo en un período de tiempo razonable.

Tal vez podamos hacer que el complemento se ajuste a la API SIP.js.
El 11 de junio de 2014 a las 2:26 p.m., "Joseph Frazier" [email protected] escribió:

@lylepratt https://github.com/lylepratt , aquí hay un tutorial básico
http://sipjs.com/guides/mobile/android-native/ para usar Crosswalk con
SIP.js, si está interesado en eso.

Si desea integrar los complementos de Cordova en su aplicación, puede usar Crosswalk
Córdoba https://crosswalk-project.org/#documentation/cordova para traer
Funcionalidad WebRTC para aplicaciones de Android generadas por Cordova. Despues de empezar
con la plantilla HelloWorld de Crosswalk Cordova
https://crosswalk-project.org/#documentation/cordova/develop_an_application ,
Pude construir el teléfono de demostración SIP.js http://sipjs.com/demo-phone/
aplicación reemplazando el directorio assets / www con los assets del teléfono de demostración
https://github.com/onsip/sipjs-examples/tree/6d260bfd8e3e1655a881ad1cad446ed2672d6611/demo-phone
y agregando los siguientes permisos a AndroidManifest.xml:



-
Responda a este correo electrónico directamente o véalo en GitHub
https://github.com/onsip/SIP.js/issues/31#issuecomment -45802303.

Creo que tengo una buena idea de lo que se debe hacer para que SIP.js use el complemento PhoneRTC para manejar llamadas de audio en iOS, así que planeo comenzar a trabajar en una prueba de concepto esta noche, ya que estoy personalmente interesado en demostrar este caso de uso.

La idea general es que las aplicaciones de iOS que usan SIP.js no usarían el SIP.WebRTC.MediaHandler predeterminado (eso depende de que JS tenga acceso directo a PeerConnection, que hemos visto que aún no es particularmente factible en iOS), pero proporcionaría un MediaHandler personalizado cuyos métodos llaman al complemento PhoneRTC.

Nos encantaría que consideraras el uso de SIP.js para tu aplicación, así que me aseguraré de mantenerte informado sobre cómo va mi experimento.

@ joseph-onsip, según nuestra discusión, tenía entendido que los cambios que estaba haciendo son cambios en el nivel de aplicación de JavaScript. El controlador de medios personalizado debe ser compatible con cualquier plataforma que implemente la API phoneRTC y no se limita a iOS.

Esas son buenas noticias. Me encantaría experimentar con tu POC este fin de semana si logras algún progreso.

Muy bien, he progresado un poco. Aquí hay una aplicación que puede realizar llamadas a un punto final SIP habilitado para WebRTC que se ejecuta en un navegador de escritorio (probé con el teléfono de demostración SIP.js en Chrome).

Actualmente, solo funciona en Android, porque eso es contra lo que estoy desarrollando y tuve que hacer un pequeño cambio en el complemento phonertc. Si se realiza el mismo cambio en el código del complemento de iOS, esperaría que esta aplicación también funcione en esa plataforma, salvo que existan diferencias específicas de la plataforma en la implementación de WebRTC.

Guau. Al mirar su código, hacer que funcionara parecía bastante simple. ¿Simplemente anuló mediaHandlerFactory con PhoneRTCMediaHandler (junto con su cambio al complemento PhoneRTC) y "simplemente funcionó"?

Editar: Al principio pensé que PhoneRTCMediaHandler estaba incluido en PhoneRTC, pero ahora me doy cuenta de que tú escribiste eso y todo esto tiene mucho más sentido.

¿"simplemente funcionó"?

Bueno, solo he podido hacer que el audio fluya entre Android y Chrome (y, por el momento, solo a Chrome, pero juro que estaba funcionando cuando comenté por última vez. Creo que la aplicación en mi teléfono no reproducir correctamente la transmisión, por lo que estoy buscando modificar el complemento para que funcione de manera consistente), pero sí, hemos intentado hacer que SIP.js sea muy configurable en este sentido. Estuve muy involucrado en la refactorización que hizo posible este tipo de cosas, que es una de las razones por las que estoy interesado en obtener un ejemplo funcional de ello.

Creo que la aplicación de mi teléfono no reproduce correctamente la transmisión.

Uf, resultó ser un problema de WebRTC en mi computadora portátil. Reiniciar lo solucionó.

Además, pude obtener audio bidireccional en una llamada _desde_ Chrome _to_ Android (solo había logrado que la otra dirección funcionara anteriormente). Solo tenía que asegurarme de que Chrome ofreciera solo audio y no también video.

Todavía no he podido llamar a Firefox, así que le hice un problema .

Android L tiene soporte WebRTC integrado.
Hemos creado un complemento Cordova para iOS .
Las guías están disponibles en sipjs.com .

¿Algún plan para portarlo a phonertc 2?

@thomasquintana está trabajando para trasladarlo a phonertc 2.0. Está casi terminado.

@alongubkin Atando los cabos sueltos ahora ... busque una solicitud de extracción pronto.
Bifurcación: https://github.com/BetterVoice/phonertc

@egreenmachine Aquí hay una versión actualizada del controlador de medios que funciona con la bifurcación anterior (o lo hará en un momento). También admite múltiples sesiones:
https://github.com/BetterVoice/PhoneRTCMediaHandler

Dado que la información de otras fuentes parece estar un poco dispersa y esto se modificó recientemente, ¿cuál es la forma recomendada para la integración móvil en este momento @egreenmachine?

No tengo mucho que informar aquí, como probablemente pueda ver si elimino el hito. Puedo decir que internamente estamos trabajando en una aplicación móvil usando NativeScript y respaldada por SIP.js. Tengo la esperanza de que pueda haber algunos resultados de cara al público que permitan a los usuarios de SIP.js hacer lo mismo de una manera simple. Sin embargo, todavía es demasiado pronto para decirlo con certeza. Dicho esto, definitivamente es posible utilizar los controladores WebRTC nativos, SIP.js y NativeScript para crear una aplicación móvil. Una vez que tenga más para compartir, actualizaré este problema.

@cybrox SIP.Js versión 0.7.8 puede funcionar en cordova con crosswalk en Android e iosrtc en iOS, sin embargo, el SIP.Js 0.9.2 tiene algunos errores en cosas de RTC.

@egreenmachine, por favor, trabaje en el react native también, gracias :)

@greenmachine tiene curiosidad por el esfuerzo de ustedes para obtener sipjs con nativescript. Estoy ejecutando sipjs 0.7.8 con una aplicación de cordova, pero dado que sipjs ya no es compatible con cordova, estoy buscando un reemplazo potencial.

si no le importa compartir el enfoque que usan con nativescript? ¿Están usando el webrtc nativo?

@andrewvmail Terminamos usando WebRTC nativo y creando una SDH personalizada para interactuar con eso. Si bien lo hago parecer simple, estaba lejos de eso. En este punto, no creo que vayamos a hacer pública la implementación. Es bastante difícil de poner en marcha y esperamos que el tiempo que tendríamos que dedicar para apoyarlo públicamente sea demasiado alto. Además, funciona para nuestra aplicación, pero es una implementación bastante específica. Tendríamos que trabajar para hacerlo genérico y esperamos que las personas se encuentren con problemas al intentar usarlo de inmediato. De la actividad de la comunidad, vemos que parece que la mayoría de la gente quiere algo que funcione fuera de la caja con solo algunos parámetros de configuración simples. Esto realmente no sería eso.

Para dispositivos móviles, nuestro soporte objetivo serán los principales navegadores móviles. Este sería Chrome en Android y Safari en iOS. Si a las personas les gustaría enviar un PR para SDH que ellos crean para otros entornos, lo agradeceríamos.

Espero que esto aclare algo de la nube en torno a los dispositivos móviles. Comuníquese con nosotros si tiene alguna otra pregunta o comentario.

También terminé escribiendo un SDH personalizado para interactuar cuidadosamente con SIP. [email protected] con la implementación de WebRTC de cordova / iOS proporcionada. Me permitió resolver un problema en el que cordova se quejaba del argumento de RTCPeerConnection.setLocalDescription () & setRemoteDescription ().

Y lo he puesto a disposición como una biblioteca npm de acceso público:
https://github.com/WesUnwin/cordova-ios-session-description-handler

Este también puede ser un ejemplo útil de cómo escribir SDH personalizados (además del SDH predeterminado dentro de la biblioteca SIP.js, que también me pareció un punto de partida útil). ¡Espero que esto ayude a alguien!

¿Alguna nueva actualización sobre esto?

Me di cuenta:

“The bulk of SIP.js no longer cares about the media and what it’s doing, which opens up some exciting possibilities, like running it in a non-web browser, NativeScript on a phone, or Node.js on a desktop app,” notes James Criscuolo, Director of Software Engineering at OnSIP.

Ref: https://www.onsip.com/voip-news/onsip-news/sipjs-v0.8.0-supports-all-major-browsers-and-renegotiation

¿Es compatible con Nativescript?

Hemos creado la aplicación móvil OnSIP utilizando Nativescript. Dicho esto, hacer que las bibliotecas WebRTC se ejecuten en Nativescript no es para principiantes. Algunos usuarios han reportado éxito con react native y ese puede ser el camino de menor resistencia.

Hola, ¿puedes admitir el navegador Baidu (china)? Puede registrarse, también puede enviar información, no puede marcar

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

Pjata picture Pjata  ·  11Comentarios

tm1000 picture tm1000  ·  12Comentarios

kyle9292 picture kyle9292  ·  3Comentarios

raphaelhovsepyan picture raphaelhovsepyan  ·  6Comentarios

seanbright picture seanbright  ·  3Comentarios