Sip.js: Mobiler Support

Erstellt am 5. Juni 2014  ·  26Kommentare  ·  Quelle: onsip/SIP.js

Dies ist ein allgemeines Thema für die Diskussion des mobilen Supports für SIP.js. Siehe https://github.com/alongubkin/phonertc/issues/7

enhancement question

Hilfreichster Kommentar

Am Ende habe ich auch ein benutzerdefiniertes SDH geschrieben, um SIP sorgfältig zu verbinden. [email protected] mit der bereitgestellten Cordova/iOS WebRTC-Implementierung. Dadurch konnte ich ein Problem lösen, bei dem sich Cordova über das Argument von RTCPeerConnection.setLocalDescription() & setRemoteDescription() beschwerte.

Und haben es als öffentlich zugängliche npm-Bibliothek zur Verfügung gestellt:
https://github.com/WesUnwin/cordova-ios-session-description-handler

Dies kann auch ein nützliches Beispiel dafür sein, wie benutzerdefinierte SDHs geschrieben werden (zusätzlich zu der Standard-SDH in der SIP.js-Bibliothek, die ich auch als nützlichen Ausgangspunkt empfand). Hoffe das hilft jedem!

Alle 26 Kommentare

Danke, dass du diesen Joseph geöffnet hast. Der Anwendungsfall ist eine plattformübergreifende App (Web, iOS, Android), die SIP-Anrufe unterstützt. Ich habe an einem Phonegap-Plugin für PJSip gearbeitet, aber es fügt eine zusätzliche Komplexitätsebene hinzu, die entfernt werden könnte, wenn wir WebRTC auf iOS und Android zum Laufen bringen könnten.

Glauben Sie, dass es sich lohnt, so etwas wie PhoneRTC für diesen Anwendungsfall zu verfolgen?

Schau dir hier meine Antwort hier an: https://github.com/alongubkin/phonertc/issues/7

Ich glaube nicht, dass PhoneRTC im aktuellen Zustand mit SIP.js funktionieren würde. Was es jedoch bietet, ist ein guter Ausgangspunkt für die mobile Entwicklung.

Für iOS konnte ich die WebRTC-Bibliotheken (mit SSL) neu kompilieren und arbeite jetzt daran, eine Obj-C-Schicht zu erstellen, um die benötigten WebRTC-Funktionen für SIP.js bereitzustellen. Mein Ziel hier wäre es, SIP.js und iOS dazu zu bringen, WebRTC-Audioanrufe zu tätigen.

Sobald die Audiofunktionalität solide ist, würde ich anfangen, daran zu arbeiten, Video hinzuzufügen. Meine Idee für Video ist, eine Funktion zu haben, die die ID eines Elements auf der Seite nimmt und diese an Obj-C weitergibt. Lassen Sie dann den nativen Code dieses Element auf der Seite finden und platzieren Sie ein natives Videoelement darüber. Ich denke, würde wahrscheinlich die beste Benutzererfahrung schaffen. Ich bin immer noch offen für andere Ideen zum Umgang mit dem Video.

@lylepratt , ich wollte nur erwähnen, dass, obwohl iOS-Unterstützung in Arbeit ist, Sie Android-Unterstützung erhalten können , indem Sie SIP.js-Demotelefon für ein grundlegendes Beispiel an. Wenn Sie wirklich eine Android-App haben möchten, können Sie Crosswalk verwenden, um Ihre Web-App zusammen mit einem WebRTC-fähigen WebView zu bündeln.

@lylepratt , Hier ist ein grundlegendes Tutorial für die Verwendung von Crosswalk mit SIP.js, wenn Sie daran interessiert sind.

Wenn Sie Cordova-Plugins in Ihre App integrieren möchten, können Sie mit Crosswalk Cordova WebRTC-Funktionalität in von Cordova generierte Android-Apps integrieren. Nach dem Start mit Crosswalk Cordova Hello World Vorlage , konnte ich das bauen SIP.js Demo Phone App durch Ersetzen der Vermögenswerte / www Verzeichnisses mit den Demo -

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

Danke für die Info Josef. Leider können wir nur etwas verfolgen, das
funktioniert auch unter iOS.

Basierend auf diesen Diskussionen sieht es so aus, als müssten wir fortfahren
mit einem PJSip-Plugin, um dies in angemessener Zeit zu tun.

Vielleicht können wir das Plugin an die SIP.js-API anpassen.
Am 11. Juni 2014 um 14:26 schrieb "Joseph Frazier" [email protected] :

@lylepratt https://github.com/lylepratt , Hier ist ein grundlegendes Tutorial
http://sipjs.com/guides/mobile/android-native/ für die Verwendung von Crosswalk mit
SIP.js, wenn Sie daran interessiert sind.

Wenn Sie Cordova-Plugins in Ihre App integrieren möchten, können Sie Crosswalk . verwenden
Cordova https://crosswalk-project.org/#documentation/cordova mitbringen
WebRTC-Funktionalität für von Cordova generierte Android-Apps. Nach dem Start
mit Crosswalk Cordovas HelloWorld-Vorlage
https://crosswalk-project.org/#documentation/cordova/develop_an_application ,
Ich konnte das SIP.js Demo Phone bauen http://sipjs.com/demo-phone/
app, indem Sie das Verzeichnis asset/www durch die Demo-Telefon-Assets ersetzen
https://github.com/onsip/sipjs-examples/tree/6d260bfd8e3e1655a881ad1cad446ed2672d6611/demo-phone
und Hinzufügen der folgenden Berechtigungen zur AndroidManifest.xml:




Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/onsip/SIP.js/issues/31#issuecomment -45802303.

Ich denke, ich habe ein gutes Gespür dafür, was getan werden muss, damit SIP.js das PhoneRTC-Plugin für die Verarbeitung von Audioanrufen auf iOS verwenden kann persönlich daran interessiert, diesen Anwendungsfall zu demonstrieren.

Die allgemeine Idee ist, dass iOS-Apps, die SIP.js verwenden, nicht den standardmäßigen SIP.WebRTC.MediaHandler verwenden (das hängt davon ab, dass JS direkten Zugriff auf die PeerConnection hat, was unter iOS noch nicht besonders praktikabel ist). sondern bietet einen benutzerdefinierten MediaHandler der Methoden aufrufe , in das PhoneRTC Plugin.

Wir würden uns freuen, wenn Sie die Verwendung von SIP.js für Ihre App in Betracht ziehen. Ich werde Sie daher über den Verlauf meines Experiments auf dem Laufenden halten.

@joseph-onsip, laut unserer Diskussion ging ich davon aus, dass es sich bei den Änderungen, die Sie vorgenommen haben, um Änderungen auf JavaScript-Anwendungsebene handelt. Der benutzerdefinierte Medienhandler sollte mit jeder Plattform kompatibel sein, die die phoneRTC-API implementiert, und ist nicht auf iOS beschränkt.

Das sind tolle Neuigkeiten. Ich würde dieses Wochenende gerne mit Ihrem POC experimentieren, wenn Sie Fortschritte machen.

Okay, ich habe ein bisschen Fortschritte gemacht. Hier ist eine App , die Anrufe an einen WebRTC-fähigen SIP-Endpunkt tätigen kann, der in einem Desktop-Browser ausgeführt wird (ich habe mit dem SIP.js-Demotelefon in Chrome getestet).

Derzeit funktioniert es nur auf Android, da ich dagegen entwickle und ich eine kleine Änderung am phonertc-Plugin vornehmen musste. Wenn die gleiche Änderung am iOS-Plugin-Code vorgenommen wird, würde ich erwarten, dass diese App auch auf dieser Plattform funktioniert, sofern keine plattformspezifischen Unterschiede in der WebRTC-Implementierung bestehen.

Beeindruckend. Wenn Sie sich Ihren Code ansehen, schien es ziemlich einfach zu sein, ihn zum Laufen zu bringen. Sie haben gerade mediaHandlerFactory mit PhoneRTCMediaHandler überschrieben (zusammen mit Ihrer Änderung am PhoneRTC-Plugin) und es hat "einfach funktioniert"?

Edit: Zuerst dachte ich, dass der PhoneRTCMediaHandler in PhoneRTC enthalten ist, aber jetzt merke ich, dass Sie das geschrieben haben und das alles macht viel mehr Sinn.

hat es "einfach funktioniert"?

Nun, ich konnte nur Audio zwischen Android und Chrome fließen lassen (und im Moment nur zu Chrome, aber ich schwöre, es hat funktioniert, als ich das letzte Mal kommentiert habe. Ich denke, die App auf meinem Telefon ist es nicht.) den Stream richtig wiederzugeben, also überlege ich , das Plugin zu modifizieren, damit es konsistent funktioniert), aber ja, wir haben versucht, SIP.js in dieser Hinsicht sehr konfigurierbar zu machen. Ich war stark an der Überarbeitung beteiligt, die so etwas möglich gemacht hat, und das ist einer der Gründe, warum ich daran interessiert bin, ein funktionierendes Beispiel dafür zusammenzustellen.

Ich glaube, die App auf meinem Handy gibt den Stream nicht richtig wieder

Es stellte sich heraus, dass es sich bei meinem Laptop um ein WebRTC-Problem handelte. Neustart hat es behoben.

Außerdem war ich in der Lage, bei einem Anruf _von_ Chrome _zu__ Android Zwei-Wege-Audio zu erhalten (vorher hatte ich nur die andere Richtung funktioniert). Ich musste nur sicherstellen, dass Chrome nur Audio und nicht auch Video anbietet.

Ich konnte Firefox immer noch nicht aufrufen, also habe ich ein Problem dafür gemacht.

Android L verfügt über eine integrierte WebRTC-Unterstützung.
Wir haben ein iOS Cordova Plugin erstellt .
Anleitungen sind auf sipjs.com verfügbar.

Gibt es Pläne, es auf Phonertc 2 zu portieren?

@thomasquintana arbeitet daran, es auf phonertc 2.0 zu portieren. Es ist fast fertig.

@alongubkin Jetzt die losen Enden zusammenbinden ... bald nach einer Pull-Anfrage suchen.
Gabel: https://github.com/BetterVoice/phonertc

@egreenmachine Hier ist eine aktualisierte Version des Media-Handlers, die mit dem obigen Fork funktioniert (oder in Kürze wird). Unterstützt auch mehrere Sitzungen:
https://github.com/BetterVoice/PhoneRTCMediaHandler

Da die Informationen in anderen Quellen etwas verstreut zu sein scheinen und dies kürzlich geändert wurde, was ist der derzeit empfohlene Weg für die mobile Integration @egreenmachine?

Ich habe hier nicht viel zu berichten, wie Sie wahrscheinlich an meiner Entfernung des Meilensteins erkennen können. Ich kann sagen, dass wir intern an einer mobilen App arbeiten, die NativeScript verwendet und von SIP.js unterstützt wird. Ich hoffe, dass es einige Ergebnisse für die Öffentlichkeit geben könnte, die es SIP.js-Benutzern ermöglichen, dasselbe auf einfache Weise zu tun. Allerdings ist es noch zu früh, um das mit Sicherheit zu sagen. Davon abgesehen ist es definitiv möglich, die nativen WebRTC-Treiber SIP.js und NativeScript zu verwenden, um eine mobile App zu erstellen. Sobald ich mehr zu teilen habe, werde ich diese Ausgabe aktualisieren.

@cybrox SIP.Js Version 0.7.8 kann auf Cordova mit Crosswalk auf Android und iosrtc auf iOS funktionieren, die SIP.Js 0.9.2 hat jedoch einige Fehler bei RTC-Sachen.

@egreenmachine bitte arbeite auch an der

@greenmachine neugierig auf

wenn es Ihnen nichts ausmacht, den Ansatz zu teilen, den Sie mit nativescript verwenden? benutzt ihr das native webrtc?

@andrewvmail Am Ende haben wir natives WebRTC verwendet und ein benutzerdefiniertes SDH erstellt, um eine Schnittstelle damit

Für Mobilgeräte wird unsere Zielunterstützung die wichtigsten mobilen Browser sein. Dies wäre Chrome auf Android und Safari auf iOS. Wenn Leute eine PR für SDH einreichen möchten, die sie für andere Umgebungen erstellen, würden wir dies begrüßen.

Ich hoffe, dass dies etwas von der Cloud rund um das Handy aufräumt. Bitte melden Sie sich, wenn Sie weitere Fragen oder Kommentare haben.

Am Ende habe ich auch ein benutzerdefiniertes SDH geschrieben, um SIP sorgfältig zu verbinden. [email protected] mit der bereitgestellten Cordova/iOS WebRTC-Implementierung. Dadurch konnte ich ein Problem lösen, bei dem sich Cordova über das Argument von RTCPeerConnection.setLocalDescription() & setRemoteDescription() beschwerte.

Und haben es als öffentlich zugängliche npm-Bibliothek zur Verfügung gestellt:
https://github.com/WesUnwin/cordova-ios-session-description-handler

Dies kann auch ein nützliches Beispiel dafür sein, wie benutzerdefinierte SDHs geschrieben werden (zusätzlich zu der Standard-SDH in der SIP.js-Bibliothek, die ich auch als nützlichen Ausgangspunkt empfand). Hoffe das hilft jedem!

Gibt es dazu neue Updates?

Mir ist aufgefallen:

“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

Wird Nativescript unterstützt?

Wir haben die mobile OnSIP-App mit Nativescript erstellt. Davon abgesehen ist die Ausführung der WebRTC-Bibliotheken in Nativescript nichts für Anfänger. Einige Benutzer haben von Erfolgen mit React Native berichtet, und das ist möglicherweise der Weg des geringsten Widerstands.

Hallo, können Sie den Baidu-Browser (China) unterstützen? Kann sich registrieren, kann auch Informationen senden, kann nicht wählen

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

Fzwael picture Fzwael  ·  5Kommentare

Pjata picture Pjata  ·  11Kommentare

DenisButCheR picture DenisButCheR  ·  7Kommentare

raphaelhovsepyan picture raphaelhovsepyan  ·  6Kommentare

kyle9292 picture kyle9292  ·  3Kommentare