Sip.js: Suporte para celular

Criado em 5 jun. 2014  ·  26Comentários  ·  Fonte: onsip/SIP.js

Este é um problema geral para discutir o suporte móvel para SIP.js. Veja https://github.com/alongubkin/phonertc/issues/7

enhancement question

Comentários muito úteis

Também acabei escrevendo um SDH personalizado para fazer a interface do SIP com cuidado. [email protected] com a implementação cordova / iOS WebRTC fornecida. Isso me permitiu resolver um problema em que cordova estava reclamando do argumento para RTCPeerConnection.setLocalDescription () & setRemoteDescription ().

E disponibilizá-lo como uma biblioteca npm acessível ao público:
https://github.com/WesUnwin/cordova-ios-session-description-handler

Este também pode ser um exemplo útil de como escrever SDHs personalizados (além do SDH padrão dentro da biblioteca SIP.js, que também descobri ser um ponto de partida útil). Espero que isso ajude alguém!

Todos 26 comentários

Obrigado por abrir este Joseph. O caso de uso é um aplicativo de plataforma cruzada (Web, iOS, Android) que oferece suporte a chamadas SIP. Tenho trabalhado em um plugin Phonegap para PJSip, mas está adicionando uma camada extra de complexidade que poderia ser removida se pudéssemos fazer o WebRTC funcionar em iOS e Android.

Você acha que vale a pena buscar algo como PhoneRTC para este caso de uso?

Dê uma olhada na minha resposta aqui: https://github.com/alongubkin/phonertc/issues/7

Não acho que PhoneRTC em seu estado atual funcione com SIP.js. O que ele fornece, porém, é um bom ponto de partida onde o desenvolvimento móvel está.

Para iOS, consegui recompilar as bibliotecas WebRTC (com SSL) e agora estou trabalhando na criação de uma camada Obj-C para expor as funções WebRTC necessárias ao SIP.js. Meu objetivo aqui seria fazer com que SIP.js e iOS pudessem fazer chamadas de áudio WebRTC.

Quando a funcionalidade de áudio estiver sólida, eu começaria a trabalhar na adição de vídeo. Minha ideia para vídeo é ter uma função que pega o id de um elemento na página e passa para o Obj-C. Em seguida, faça com que o código nativo encontre esse elemento na página e coloque um elemento de vídeo nativo sobre ele. Acho que provavelmente criaria a melhor experiência do usuário. Ainda estou aberto a outras idéias sobre como lidar com o vídeo.

@lylepratt , só queria mencionar que, embora o suporte para iOS esteja em andamento, você pode ter suporte para Android simplesmente visitando o site do aplicativo . Dê uma olhada no telefone de demonstração SIP.js para um exemplo básico. Se você realmente gostaria de ter um aplicativo Android, pode usar o Crosswalk para agrupar seu aplicativo da web com um WebView habilitado para WebRTC.

@lylepratt , Aqui está um tutorial básico para usar Crosswalk com SIP.js, se você estiver interessado nisso.

Se você gostaria de integrar plugins Cordova em seu aplicativo, você pode usar Crosswalk Cordova para trazer a funcionalidade WebRTC para aplicativos Android gerados por Cordova. Depois de começar com o modelo HelloWorld do Crosswalk Cordova , consegui construir o aplicativo SIP.js Demo Phone substituindo o diretório assets / www pelos ativos do telefone demo e adicionando as seguintes permissões ao 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" />

Obrigado pela informação Joseph. Infelizmente, só podemos buscar algo que
funciona no iOS também.

Com base nessas discussões, parece que teremos que continuar
com um plugin PJSip para fazer isso em um período de tempo razoável.

Talvez possamos fazer o plugin em conformidade com a API SIP.js.
Em 11 de junho de 2014, 14h26, "Joseph Frazier" [email protected] escreveu:

@lylepratt https://github.com/lylepratt , aqui está um tutorial básico
http://sipjs.com/guides/mobile/android-native/ para usar Crosswalk com
SIP.js, se você estiver interessado nisso.

Se você gostaria de integrar plugins Cordova em seu aplicativo, você pode usar Crosswalk
Cordova https://crosswalk-project.org/#documentation/cordova para trazer
Funcionalidade WebRTC para aplicativos Android gerados por Cordova. Depois de começar
com o template HelloWorld de Crosswalk Cordova
https://crosswalk-project.org/#documentation/cordova/develop_an_application ,
Consegui construir o telefone de demonstração SIP.js http://sipjs.com/demo-phone/
aplicativo substituindo o diretório assets / www pelos recursos do telefone de demonstração
https://github.com/onsip/sipjs-examples/tree/6d260bfd8e3e1655a881ad1cad446ed2672d6611/demo-phone
e adicionando as seguintes permissões ao AndroidManifest.xml:



-
Responda a este e-mail diretamente ou visualize-o no GitHub
https://github.com/onsip/SIP.js/issues/31#issuecomment -45802303.

Acho que tenho um bom senso do que precisa ser feito para SIP.js usar o plugin PhoneRTC para lidar com chamadas de áudio no iOS, então estou planejando começar a trabalhar em uma prova de conceito esta noite, já que estou pessoalmente interessado em demonstrar este caso de uso.

A ideia geral é que os aplicativos iOS que usam SIP.js não usem o SIP.WebRTC.MediaHandler padrão (isso depende do JS ter acesso direto ao PeerConnection, que vimos ainda não é particularmente viável no iOS), mas forneceria um MediaHandler personalizado cujos métodos chamam o plug-in PhoneRTC.

Adoraríamos que você considerasse o uso de SIP.js para o seu aplicativo, portanto, manterei você informado sobre o andamento do meu experimento.

@ joseph-onsip, de acordo com nossa discussão, entendi que as alterações que você estava fazendo são alterações no nível do aplicativo javascript. O manipulador de mídia personalizado deve ser compatível com qualquer plataforma que implemente a API phoneRTC e não está limitado ao iOS.

Essas são ótimas notícias. Eu adoraria experimentar seu POC neste fim de semana se você fizer algum progresso.

Tudo bem, fiz alguns progressos. Este é um aplicativo que pode fazer chamadas para um endpoint SIP habilitado para WebRTC em execução em um navegador de desktop (testei com o telefone de demonstração SIP.js no Chrome).

Atualmente, ele só funciona no Android, porque é para isso que estou desenvolvendo e tive que fazer uma pequena alteração no plugin do phonertc. Se a mesma alteração for feita no código do plug-in do iOS, espero que este aplicativo funcione nessa plataforma também, impedindo quaisquer diferenças específicas da plataforma na implementação do WebRTC.

Uau. Olhando para o seu código, fazê-lo funcionar parecia bastante simples. Você acabou de substituir mediaHandlerFactory por PhoneRTCMediaHandler (junto com sua alteração para o plug-in PhoneRTC) e "simplesmente funcionou"?

Edit: No começo eu pensei que o PhoneRTCMediaHandler fosse incluído no PhoneRTC, mas agora percebo que você escreveu isso e tudo isso faz muito mais sentido.

"simplesmente funcionou"?

Bem, só consegui fazer o áudio fluir entre o Android e o Chrome (e, no momento, apenas para o Chrome, mas juro que estava funcionando quando comentei pela última vez. Acho que o aplicativo no meu telefone não reproduzir o fluxo corretamente, então estou tentando modificar o plug-in para fazê-lo funcionar de maneira consistente), mas sim, tentamos tornar o SIP.js muito configurável nesse sentido. Eu estava fortemente envolvido no refatorador que tornou esse tipo de coisa possível, que é uma das razões pelas quais estou interessado em reunir um exemplo funcional disso.

Eu acho que o aplicativo no meu telefone não está reproduzindo corretamente o stream

Ugh, isso acabou sendo um problema de WebRTC no meu laptop. A reinicialização corrigiu isso.

Além disso, consegui obter áudio bidirecional em uma chamada _do_ Chrome _para_ Android (anteriormente, eu só tinha feito a outra direção funcionar). Eu só tinha que ter certeza de que o Chrome estava oferecendo apenas áudio e não vídeo.

Ainda não consegui ligar para o Firefox, então criei um problema para ele.

O Android L possui suporte WebRTC integrado.
Criamos um plugin iOS Cordova .
Os guias estão disponíveis em sipjs.com .

Algum plano de portá-lo para o Phonertc 2?

@thomasquintana está trabalhando para portá-lo para o phonertc 2.0. Está quase terminado.

@alongubkin Amarrando as pontas soltas agora ... procure por um pull-request em breve.
Fork: https://github.com/BetterVoice/phonertc

@egreenmachine Aqui está uma versão atualizada do gerenciador de mídia que funciona com o fork acima (ou funcionará em breve). Também oferece suporte a várias sessões:
https://github.com/BetterVoice/PhoneRTCMediaHandler

Como as informações de outras fontes parecem estar um pouco dispersas e foram modificadas recentemente, qual é a forma recomendada para integração móvel agora @egreenmachine?

Não tenho muito a relatar aqui, como você provavelmente pode perceber por eu removendo o marco. Posso dizer que internamente estamos trabalhando em um aplicativo móvel usando NativeScript e apoiado por SIP.js. Tenho esperança de que alguns resultados públicos possam permitir que os usuários do SIP.js façam o mesmo de maneira simples. No entanto, ainda é muito cedo para ter certeza. Dito isso, é definitivamente possível usar os drivers WebRTC nativos, SIP.js e NativeScript para fazer um aplicativo móvel. Assim que tiver mais para compartilhar, atualizarei esse problema.

@cybrox SIP.Js versão 0.7.8 pode funcionar em cordova com crosswalk no Android e iosrtc no iOS, o SIP.Js 0.9.2 entretanto tem alguns erros no material RTC.

@egreenmachine, por favor, trabalhe na reação nativa também, obrigado :)

@greenmachine curioso sobre o esforço de vocês em obter sipjs com o nativescript. Estou executando o sipjs 0.7.8 com um aplicativo Cordova, mas como o Sipjs não oferece mais suporte a Cordova, procuro por uma possível substituição.

se você não se importa em compartilhar a abordagem que vocês usam com o nativescript? vocês estão usando o webrtc nativo?

@andrewvmail Acabamos usando WebRTC nativo e criando um SDH personalizado para fazer a interface com ele. Embora eu faça parecer simples, estava longe disso. Neste ponto, não acho que vamos tornar a implementação pública. É muito difícil começar a funcionar e esperamos que o tempo que teríamos para nos comprometer para apoiá-lo publicamente é muito alto. Além disso, funciona para nosso aplicativo, mas é uma implementação bastante específica. Teríamos que trabalhar para torná-lo genérico e esperamos que as pessoas tenham problemas ao tentar usá-lo pronto para uso. Pela atividade da comunidade, vemos que parece que a maioria das pessoas deseja algo que funcione imediatamente com apenas alguns parâmetros de configuração simples. Isso não seria realmente isso.

Para dispositivos móveis, nosso suporte alvo serão os principais navegadores móveis. Isso seria Chrome no Android e Safari no iOS. Se as pessoas quiserem enviar um PR de volta para SDH que eles criaram para outros ambientes, nós o receberíamos com satisfação.

Espero que isso esclareça um pouco da nuvem em torno dos dispositivos móveis. Entre em contato se tiver outras perguntas ou comentários.

Também acabei escrevendo um SDH personalizado para fazer a interface do SIP com cuidado. [email protected] com a implementação cordova / iOS WebRTC fornecida. Isso me permitiu resolver um problema em que cordova estava reclamando do argumento para RTCPeerConnection.setLocalDescription () & setRemoteDescription ().

E disponibilizá-lo como uma biblioteca npm acessível ao público:
https://github.com/WesUnwin/cordova-ios-session-description-handler

Este também pode ser um exemplo útil de como escrever SDHs personalizados (além do SDH padrão dentro da biblioteca SIP.js, que também descobri ser um ponto de partida útil). Espero que isso ajude alguém!

Alguma nova atualização sobre isso?

Percebi:

“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

O Nativescript é compatível?

Construímos o aplicativo móvel OnSIP usando Nativescript. Dito isto - fazer com que as bibliotecas WebRTC rodem em Nativescript não é para iniciantes. Alguns usuários relataram sucesso com o reagente nativo e esse pode ser o caminho de menor resistência.

Olá, você pode oferecer suporte ao navegador Baidu (China)? Pode se registrar, também pode enviar informações, não pode discar

Esta página foi útil?
0 / 5 - 0 avaliações