これは、SIP.jsのモバイルサポートについて話し合うための一般的な問題です。 https://github.com/alongubkin/phonertc/issues/7を参照して
このジョセフを開いてくれてありがとう。 ユースケースは、SIP通話をサポートするクロスプラットフォームアプリ(Web、iOS、Android)です。 私はPJSip用のPhonegapプラグインに取り組んできましたが、iOSとAndroidでWebRTCを動作させることができれば、削除できる複雑さの層が追加されています。
PhoneRTCのようなものは、このユースケースで追求する価値があると思いますか?
ここで私の応答を見てください: https :
現在の状態のPhoneRTCがSIP.jsで動作するとは思いません。 それが提供するものは、モバイル開発がどこにあるかについての良い出発点です。
iOSの場合、WebRTCライブラリを(SSLを使用して)再コンパイルすることができました。現在、必要なWebRTC関数をSIP.jsに公開するためのObj-Cレイヤーの作成に取り組んでいます。 ここでの私の目標は、SIP.jsとiOSがWebRTCオーディオ呼び出しを行えるようにすることです。
オーディオ機能が安定したら、ビデオの追加に取り掛かります。 私のビデオのアイデアは、ページ上の要素のIDを取得し、それをObj-Cに渡す関数を持つことです。 次に、ネイティブコードにページ上のその要素を見つけてもらい、その上にネイティブビデオ要素を配置します。 おそらく最高のユーザーエクスペリエンスを生み出すと思います。 私はまだビデオを処理する方法について他のアイデアを開いています。
@ lylepratt 、iOSのサポートは現在、アプリのWebサイトにアクセスするを受けることができます。 基本的な例については、 SIP.jsデモ電話をCrosswalkを使用してWebアプリをWebRTC対応のWebViewとバンドルできます。
@lylepratt 、興味があれば、SIP.jsでCrosswalkを使用するための基本的なチュートリアルがあります。
Cordovaプラグインをアプリに統合する場合は、 Crosswalk Cordovaを使用して、Cordovaによって生成されたAndroidアプリにWebRTC機能を導入できます。 Crosswalk CordovaのHelloWorldテンプレートを使用して開始した後、assets / wwwディレクトリをデモ電話アセットに置き換え、AndroidManifest.xmlに次の権限を追加することで、 SIP.jsデモ電話アプリを構築できました。
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
ジョセフの情報をありがとう。 残念ながら、私たちは何かを追求することしかできません
iOSでも動作します。
これらの議論に基づいて、私たちは継続しなければならないようです
PJSIPが妥当な時間内にそれを行うために、プラグインで。
プラグインをSIP.jsAPIに準拠させることができるかもしれません。
2014年6月11日14:26、「JosephFrazier」 [email protected]は次のように書いています。
@lylepratt https://github.com/lylepratt 、これが基本的なチュートリアルです
http://sipjs.com/guides/mobile/android-native/でCrosswalkを使用する場合
SIP.js、それに興味があるなら。Cordovaプラグインをアプリに統合する場合は、Crosswalkを使用できます
コルドバhttps://crosswalk-project.org/#documentation/cordova持参します
Cordovaによって生成されたAndroidアプリへのWebRTC機能。 開始後
CrosswalkCordovaのHelloWorldテンプレートを使用
https://crosswalk-project.org/#documentation/cordova/develop_an_application 、
SIP.jsデモ電話http://sipjs.com/demo-phone/を構築することができました
デモ電話の資産と資産/ wwwディレクトリを置き換えることにより、アプリ
https://github.com/onsip/sipjs-examples/tree/6d260bfd8e3e1655a881ad1cad446ed2672d6611/demo-phone
次の権限をAndroidManifest.xmlに追加します。
—
このメールに直接返信またはGitHubの上でそれを見ます
https://github.com/onsip/SIP.js/issues/31#issuecomment-45802303 。
SIP.jsがiOSで音声通話を処理するためにPhoneRTCプラグインを使用するために何をする必要があるかをよく理解していると思うので、今夜、概念実証に取り組み始める予定です。このユースケースのデモンストレーションに個人的に興味があります。
一般的な考え方は、SIP.jsを使用するiOSアプリはデフォルトのSIP.WebRTC.MediaHandlerを使用しないということです(これは、JSがPeerConnectionに直接アクセスできるかどうかに依存しますが、iOSではまだ特に実現可能ではありません)。ただし、メソッドがPhoneRTCプラグインを呼び出すカスタムMediaHandlerを提供します。
アプリにSIP.jsを使用することを検討していただきたいので、私の実験がどのように行われるかをお知らせします。
@ joseph-onsip、私たちの議論によれば、あなたが行っている変更はjavascriptアプリケーションレベルの変更であるというのが私の理解でした。 カスタムメディアハンドラーは、phoneRTC apiを実装するすべてのプラットフォームと互換性がある必要があり、iOSに限定されません。
それは素晴らしいニュースです。 何か進歩があれば、今週末にあなたのPOCを試してみたいと思います。
さて、私は少し進歩しました。 これは、デスクトップブラウザで実行されているWebRTC対応のSIPエンドポイントに電話をかけることができるアプリです(ChromeのSIP.jsデモ電話でテストしました)。
現在、Androidでのみ機能します。これは、私が開発しているものであり、phonertcプラグインに小さな変更を加える必要があったためです。 iOSプラグインコードに同じ変更が加えられた場合、WebRTC実装におけるプラットフォーム固有の違いを除けば、このアプリはそのプラットフォームでも機能すると思います。
わお。 コードを見ると、コードを機能させるのはかなり簡単に思えました。 mediaHandlerFactory
をPhoneRTCMediaHandler
上書きし(PhoneRTCプラグインへの変更とともに)、「正常に機能しました」か?
編集:最初はPhoneRTCMediaHandlerがPhoneRTCに含まれていると思っていましたが、あなたがそれを書いたことに気づきました。これはすべてはるかに理にかなっています。
それは「うまくいった」?
ええと、私はAndroidとChromeの間でオーディオを流すことしかできませんでした(そして、現時点ではChromeにのみですが、最後にコメントしたときにそれが機能していたことを誓います。私の電話のアプリはそうではないと思います適切に私はので、ストリームを再生するに探して)それは一貫作業を取得するためのプラグインを変更しますが、はい、私たちは、この点でSIP.jsは非常に設定可能にするためにしようとしました。 私はこの種のことを可能にするリファクタリングに深く関わっていました。それが、その実用的な例をまとめることに興味がある理由の1つです。
携帯電話のアプリがストリームを適切に再生していないことが原因だと思います
うーん、これは私のラップトップでのWebRTCの問題であることが判明しました。 再起動すると修正されました。
また、ChromeからAndroidへの通話で双方向の音声を取得することができました(以前は反対方向にしか機能していませんでした)。 Chromeがビデオではなくオーディオのみを提供していることを確認する必要がありました。
まだFirefoxを呼び出せないので、問題を起こしました。
AndroidLにはWebRTCサポートが組み込まれています。
iOSコルドバプラグインを作成しました。
ガイドはsipjs.comで入手できます。
それをphonertc2に移植する計画はありますか?
@thomasquintanaは、phonertc2.0への移植に取り組んでいます。 ほぼ完成です。
@alongubkin今ルーズエンドを結ぶ...すぐにプルリクエストを探してください。
フォーク: https :
@egreenmachineこれは、上記のフォークで動作する(または少しで動作する)メディアハンドラーの更新バージョンです。 複数のセッションもサポートします。
https://github.com/BetterVoice/PhoneRTCMediaHandler
他のソース間で情報が少し散らばっているようで、これは最近変更されたので、現在@egreenmachineでモバイル統合に推奨される方法は何ですか?
マイルストーンを削除したことがわかると思いますが、ここで報告することはあまりありません。 内部的には、NativeScriptを使用し、SIP.jsに支えられたモバイルアプリに取り組んでいると言えます。 SIP.jsユーザーが簡単な方法で同じことを行うことができるようになるいくつかの公開された結果があるかもしれないことを願っています。 しかし、それを確実に伝えるにはまだ時期尚早です。 そうは言っても、ネイティブWebRTCドライバー、SIP.js、NativeScriptを使用してモバイルアプリを作成することは間違いなく可能です。 さらに共有する必要がある場合は、この問題を更新します。
@cybrox SIP.Jsバージョン0.7.8は、Androidではcrosswalk、iOSではiosrtcを使用してcordovaで動作しますが、SIP.Js0.9.2ではRTC関連でエラーが発生しました。
@egreenmachineは、react
@greenmachineは、nativescriptでsipjsを取得するための努力に興味があります。 コルドバアプリでsipjs0.7.8を実行していますが、sipjsはコルドバをサポートしていないため、潜在的な代替品を探しています。
皆さんがnativescriptで使用しているアプローチを共有してもかまわない場合は、 ネイティブwebrtcを使用していますか?
@andrewvmail最終的にネイティブWebRTCを使用し、
モバイルの場合、私たちのターゲットサポートは主要なモバイルブラウザになります。 これは、AndroidではChrome、iOSではSafariになります。 他の環境向けに作成したSDHのPRを提出したい場合は、歓迎します。
これにより、モバイル周辺のクラウドの一部がクリアされることを願っています。 他にご不明な点やご意見がございましたら、お気軽にお問い合わせください。
また、SIPを注意深くインターフェースするためのカスタムSDHを作成することになりました。 提供されているcordova / iOSWebRTC実装を使用した[email protected]。 これにより、cordovaがRTCPeerConnection.setLocalDescription()およびsetRemoteDescription()への引数について不平を言っていた問題を解決することができました。
そして、それを公的にアクセス可能なnpmライブラリとして利用できるようにしました:
https://github.com/WesUnwin/cordova-ios-session-description-handler
これは、カスタムSDHを作成する方法の便利な例でもあります(SIP.jsライブラリ内のデフォルトのSDHに加えて、これも便利な出発点であることがわかりました)。 これが誰かに役立つことを願っています!
これに関する新しい更新はありますか?
私は気づきました:
“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.
参照: https :
Nativescriptはサポートされていますか?
Nativescriptを使用してOnSIPモバイルアプリを構築しました。 そうは言っても、WebRTCライブラリをNativescriptで実行するのは初心者向けではありません。 一部のユーザーは、react nativeで成功したと報告しており、それが最も抵抗の少ないパスである可能性があります。
こんにちは、Baiduブラウザ(中国)をサポートできますか? 登録可能、情報送信も可能、ダイヤル不可
最も参考になるコメント
また、SIPを注意深くインターフェースするためのカスタムSDHを作成することになりました。 提供されているcordova / iOSWebRTC実装を使用した[email protected]。 これにより、cordovaがRTCPeerConnection.setLocalDescription()およびsetRemoteDescription()への引数について不平を言っていた問題を解決することができました。
そして、それを公的にアクセス可能なnpmライブラリとして利用できるようにしました:
https://github.com/WesUnwin/cordova-ios-session-description-handler
これは、カスタムSDHを作成する方法の便利な例でもあります(SIP.jsライブラリ内のデフォルトのSDHに加えて、これも便利な出発点であることがわかりました)。 これが誰かに役立つことを願っています!