Sip.js: Assistance mobile

Créé le 5 juin 2014  ·  26Commentaires  ·  Source: onsip/SIP.js

Il s'agit d'un problème général pour discuter de la prise en charge mobile de SIP.js. Voir https://github.com/alongubkin/phonertc/issues/7

enhancement question

Commentaire le plus utile

J'ai également fini par écrire un SDH personnalisé pour interfacer soigneusement SIP. [email protected] avec l'

Et l'ont rendu disponible en tant que bibliothèque npm accessible au public :
https://github.com/WesUnwin/cordova-ios-session-description-handler

Cela peut également être un exemple utile de la façon d'écrire des SDH personnalisés (en plus du SDH par défaut dans la bibliothèque SIP.js que j'ai également trouvé comme un point de départ utile). J'espère que cela aide quelqu'un !

Tous les 26 commentaires

Merci d'avoir ouvert ce Joseph. Le cas d'utilisation est une application multiplateforme (Web, iOS, Android) qui prend en charge les appels SIP. J'ai travaillé sur un plugin Phonegap pour PJSip, mais cela ajoute une couche supplémentaire de complexité qui pourrait être supprimée si nous pouvions faire fonctionner WebRTC sur iOS et Android.

Pensez-vous que quelque chose comme PhoneRTC vaut la peine d'être poursuivi pour ce cas d'utilisation ?

Jetez un œil à ma réponse ici : https://github.com/alongubkin/phonertc/issues/7

Je ne pense pas que PhoneRTC dans son état actuel fonctionnerait avec SIP.js. Ce qu'il fournit cependant est un bon point de départ pour le développement mobile.

Pour iOS, j'ai pu recompiler les bibliothèques WebRTC (avec SSL) et maintenant je travaille sur la création d'une couche Obj-C pour exposer les fonctions WebRTC nécessaires à SIP.js. Mon objectif ici serait d'obtenir SIP.js et iOS pour pouvoir passer des appels audio WebRTC.

Une fois que la fonctionnalité audio est solide, je commencerais à travailler sur l'ajout de vidéo. Mon idée pour la vidéo est d'avoir une fonction qui prend l'identifiant d'un élément sur la page et le transmet à Obj-C. Demandez ensuite au code natif de trouver cet élément sur la page et de placer un élément vidéo natif dessus. Je pense que cela créerait probablement la meilleure expérience utilisateur. Je suis toujours ouvert à d'autres idées sur la façon de gérer la vidéo.

@lylepratt , je voulais juste mentionner que bien que le support iOS soit en cours, vous pouvez avoir le support Android simplement en visitant le site Web de l'application . Jetez un œil au téléphone de démonstration SIP.js pour un exemple de base. Si vous souhaitez vraiment avoir une application Android, vous pouvez utiliser Crosswalk pour regrouper votre application Web avec une WebView compatible WebRTC.

@lylepratt , Voici un tutoriel de base pour utiliser Crosswalk avec SIP.js, si cela vous intéresse.

Si vous souhaitez intégrer des plugins Cordova dans votre application, vous pouvez utiliser Crosswalk Cordova pour apporter la fonctionnalité WebRTC aux applications Android générées par Cordova. Après avoir commencé avec le modèle HelloWorld de Crosswalk Cordova , j'ai pu créer l'application SIP.js Demo Phone en remplaçant le répertoire assets/www par les assets du téléphone de démonstration et en ajoutant les autorisations suivantes à 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" />

Merci pour l'info Joseph. Malheureusement, nous ne pouvons poursuivre que quelque chose qui
fonctionne également sur iOS.

Sur la base de ces discussions, il semble que nous devrons continuer
avec un plugin PJSip afin de le faire dans un délai raisonnable.

Peut-être que nous pouvons rendre le plugin conforme à l'API SIP.js.
Le 11 juin 2014 à 14h26, "Joseph Frazier" [email protected] a écrit :

@lylepratt https://github.com/lylepratt , Voici un tutoriel de base
http://sipjs.com/guides/mobile/android-native/ pour utiliser Crosswalk avec
SIP.js, si cela vous intéresse.

Si vous souhaitez intégrer des plugins Cordova dans votre application, vous pouvez utiliser Crosswalk
Cordova https://crosswalk-project.org/#documentation/cordova à apporter
Fonctionnalité WebRTC aux applications Android générées par Cordova. Après avoir commencé
avec le modèle HelloWorld de Crosswalk Cordova
https://crosswalk-project.org/#documentation/cordova/develop_an_application ,
J'ai pu créer le téléphone de démonstration SIP.js http://sipjs.com/demo-phone/
app en remplaçant le répertoire assets/www par les assets du téléphone de démonstration
https://github.com/onsip/sipjs-examples/tree/6d260bfd8e3e1655a881ad1cad446ed2672d6611/demo-phone
et en ajoutant les autorisations suivantes à AndroidManifest.xml :



-
Répondez directement à cet e-mail ou consultez-le sur GitHub
https://github.com/onsip/SIP.js/issues/31#issuecomment-45802303 .

Je pense avoir une bonne idée de ce qui doit être fait pour que SIP.js utilise le plugin PhoneRTC pour gérer les appels audio sur iOS, donc je prévois de commencer à travailler sur une preuve de concept ce soir, car je suis personnellement intéressé à démontrer ce cas d'utilisation.

L'idée générale est que les applications iOS qui utilisent SIP.js n'utiliseraient pas le SIP.WebRTC.MediaHandler par défaut (cela dépend de l'accès direct de JS à PeerConnection, ce que nous avons vu n'est pas encore particulièrement faisable sur iOS), mais fournirait un MediaHandler personnalisé dont les méthodes appellent le plugin PhoneRTC.

Nous aimerions que vous envisagiez d'utiliser SIP.js pour votre application. Je ne manquerai donc pas de vous tenir au courant du déroulement de mon expérience.

@joseph-onsip, selon notre discussion, j'ai cru comprendre que les modifications que vous apportiez étaient des modifications au niveau de l'application javascript. Le gestionnaire de média personnalisé doit être compatible avec toute plate-forme implémentant l'API phoneRTC et n'est pas limité à iOS.

Ce sont de bonnes nouvelles. J'aimerais expérimenter avec votre POC ce week-end si vous faites des progrès.

Bon, j'ai un peu avancé. Voici une application qui peut passer des appels vers un point de terminaison SIP compatible WebRTC s'exécutant dans un navigateur de bureau (j'ai testé avec le téléphone de démonstration SIP.js dans Chrome).

Actuellement, cela ne fonctionne que sur Android, car c'est contre cela que je développe et j'ai dû apporter une petite modification au plugin phonertc. Si la même modification est apportée au code du plug-in iOS, je m'attendrais à ce que cette application fonctionne également sur cette plate-forme, à l'exception de toute différence spécifique à la plate-forme dans l'implémentation WebRTC.

Wow. En regardant votre code, le faire fonctionner semblait assez simple. Vous venez de remplacer mediaHandlerFactory avec PhoneRTCMediaHandler (avec votre modification du plugin PhoneRTC) et cela "a juste fonctionné" ?

Edit: Au début, je pensais que PhoneRTCMediaHandler était inclus dans PhoneRTC, mais je me rends compte maintenant que vous avez écrit cela et que tout cela a beaucoup plus de sens.

ça "a juste fonctionné" ?

Eh bien, je n'ai pu faire circuler l'audio qu'entre Android et Chrome (et, pour le moment, uniquement vers Chrome, mais je jure que cela fonctionnait la dernière fois que j'ai commenté. Je pense que c'est que l'application sur mon téléphone n'est pas correctement la lecture du flux, donc je suis à la recherche en modifiant le plugin pour le faire fonctionner régulièrement), mais oui, nous avons essayé de faire SIP.js très configurable à cet égard. J'ai été fortement impliqué dans le refactor qui a rendu ce genre de chose possible, ce qui est l'une des raisons pour lesquelles je suis intéressé à en rassembler un exemple fonctionnel.

Je pense que c'est que l'application sur mon téléphone ne lit pas correctement le flux

Ugh, cela s'est avéré être un problème WebRTC sur mon ordinateur portable. Le redémarrage l'a corrigé.

De plus, j'ai pu obtenir un son bidirectionnel lors d'un appel _de_ Chrome _vers_ Android (je n'avais fait fonctionner que l'autre sens auparavant). Je devais juste m'assurer que Chrome n'offrait que de l'audio et pas aussi de la vidéo.

Je n'ai toujours pas pu appeler Firefox, j'ai donc fait un problème pour cela.

Android L prend en charge WebRTC.
Nous avons créé un plugin iOS Cordova .
Les guides sont disponibles sur sipjs.com .

Avez-vous l'intention de le porter sur phonertc 2 ?

@thomasquintana travaille à son portage sur phonertc 2.0. C'est presque fini.

@alongubkin Terminez les détails maintenant... cherchez bientôt une pull-request.
Fourche : https://github.com/BetterVoice/phonertc

@egreenmachine Voici une version mise à jour du gestionnaire de média qui fonctionne avec le fork ci-dessus (ou le fera dans un petit moment). Prend également en charge plusieurs sessions :
https://github.com/BetterVoice/PhoneRTCMediaHandler

Étant donné que les informations provenant d'autres sources semblent être un peu dispersées et que cela a été récemment modifié, quelle est la méthode recommandée pour l'intégration mobile en ce moment @egreenmachine ?

Je n'ai pas grand-chose à signaler ici, comme vous pouvez probablement le constater en supprimant le jalon. Je peux dire qu'en interne, nous travaillons sur une application mobile utilisant NativeScript et soutenue par SIP.js. J'espère qu'il pourrait y avoir des résultats publics qui permettront aux utilisateurs de SIP.js de faire de même de manière simple. Cependant, il est encore trop tôt pour le dire avec certitude. Cela étant dit, il est tout à fait possible d'utiliser les pilotes WebRTC natifs, SIP.js et NativeScript pour créer une application mobile. Une fois que j'aurai plus à partager, je mettrai à jour ce problème.

La version

@egreenmachine s'il vous plaît travaillez aussi sur le natif de réaction, merci :)

@greenmachine curieux de vos efforts pour obtenir des sipjs avec nativescript. j'exécute sipjs 0.7.8 avec une application cordova mais depuis sipjs ne prend plus en charge cordova à la recherche d'un remplacement potentiel.

si cela ne vous dérange pas de partager l'approche que vous utilisez avec nativescript ? utilisez-vous le webrtc natif ?

@andrewvmail Nous avons fini par utiliser WebRTC natif et créer un SDH personnalisé pour interagir avec cela. Même si j'ai l'air simple, c'était loin d'être le cas. À ce stade, je ne pense pas que nous allons rendre la mise en œuvre publique. Il est assez difficile de démarrer et nous nous attendons à ce que le temps que nous aurions à consacrer pour le soutenir publiquement soit trop élevé. De plus, cela fonctionne pour notre application, mais il s'agit d'une implémentation assez spécifique. Nous devrons travailler pour le rendre générique et nous nous attendons à ce que les gens rencontrent des problèmes en essayant de l'utiliser hors de la boîte. D'après l'activité de la communauté, il semble que la plupart des gens veulent quelque chose qui fonctionne hors de la boîte avec juste quelques paramètres de configuration simples. Ce ne serait pas vraiment ça.

Pour le mobile, notre support cible sera les principaux navigateurs mobiles. Ce serait Chrome sur Android et Safari sur iOS. Si les gens souhaitent soumettre un PR pour SDH qu'ils créent pour d'autres environnements, nous serions heureux de le faire.

J'espère que cela efface une partie du cloud autour du mobile. Veuillez nous contacter si vous avez d'autres questions ou commentaires.

J'ai également fini par écrire un SDH personnalisé pour interfacer soigneusement SIP. [email protected] avec l'

Et l'ont rendu disponible en tant que bibliothèque npm accessible au public :
https://github.com/WesUnwin/cordova-ios-session-description-handler

Cela peut également être un exemple utile de la façon d'écrire des SDH personnalisés (en plus du SDH par défaut dans la bibliothèque SIP.js que j'ai également trouvé comme un point de départ utile). J'espère que cela aide quelqu'un !

De nouvelles mises à jour à ce sujet ?

J'ai remarqué:

“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.

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

Nativescript est-il pris en charge ?

Nous avons construit l'application mobile OnSIP en utilisant Nativescript. Cela étant dit, faire fonctionner les bibliothèques WebRTC dans Nativescript n'est pas pour les débutants. Certains utilisateurs ont signalé le succès de la réaction native et cela peut être le chemin de moindre résistance.

Bonjour, pouvez-vous prendre en charge le navigateur Baidu (chine) ? Peut s'inscrire, peut également envoyer des informations, ne peut pas composer

Cette page vous a été utile?
0 / 5 - 0 notes