Sip.js: 移动支持

创建于 2014-06-05  ·  26评论  ·  资料来源: onsip/SIP.js

这是讨论对 SIP.js 的移动支持的一般问题。 见https://github.com/alongubkin/phonertc/issues/7

enhancement question

最有用的评论

我还最终编写了一个自定义 SDH 来仔细地连接 SIP。 [email protected]与提供的cordova/iOS WebRTC 实现。 它让我解决了科尔多瓦抱怨 RTCPeerConnection.setLocalDescription() 和 setRemoteDescription() 参数的问题。

并将其作为可公开访问的 npm 库提供:
https://github.com/WesUnwin/cordova-ios-session-description-handler

这也可能是如何编写自定义 SDH 的有用示例(除了 SIP.js 库中的默认 SDH,我也发现它是一个有用的起点)。 希望这可以帮助任何人!

所有26条评论

感谢您打开这个约瑟夫。 用例是一个支持 SIP 呼叫的跨平台应用程序(Web、iOS、Android)。 我一直在为 PJSip 开发一个 Phonegap 插件,但它增加了一个额外的复杂层,如果我们可以让 WebRTC 在 iOS 和 Android 上工作,就可以消除它。

对于这个用例,你认为像 PhoneRTC 这样的东西值得追求吗?

看看我在这里的回复: https :

我认为当前状态下的 PhoneRTC 不能与 SIP.js 一起使用。 不过,它确实提供了一个很好的起点,了解移动开发所处的位置。

对于 iOS,我能够重新编译 WebRTC 库(使用 SSL),现在我正在创建一个 Obj-C 层,以将所需的 WebRTC 函数公开给 SIP.js。 我的目标是让 SIP.js 和 iOS 能够进行 WebRTC 音频呼叫。

一旦音频功能稳定,我就会开始添加视频。 我对视频的想法是拥有一个函数,该函数获取页面上元素的 id 并将其传递给 Obj-C。 然后让本机代码在页面上找到该元素并在其上放置本机视频元素。 我认为可能会创造最好的用户体验。 我仍然对如何处理视频的其他想法持开放态度。

@lylepratt ,我只想提一下,虽然 iOS 支持正在进行中,但您只需访问应用程序网站即可获得 Android 支持。 查看SIP.js Demo Phone的基本示例。 如果您真的想要一个 Android 应用程序,您可以使用Crosswalk将您的 Web 应用程序与支持 WebRTC 的 WebView 捆绑在一起。

@lylepratt ,如果您对此感兴趣,这里有一个使用 Crosswalk 和 SIP.js 的基本教程

如果您想将 Cordova 插件集成到您的应用程序中,您可以使用Crosswalk Cordova将 WebRTC 功能引入由 Cordova 生成的 Android 应用程序。 在开始使用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.js API。
2014 年 6 月 11 日下午 2:26,“Joseph Frazier”通知@ github.com 写道:

@lylepratt https://github.com/lylepratt ,这是一个基础教程
http://sipjs.com/guides/mobile/android-native/用于使用 Crosswalk
SIP.js,如果您对此感兴趣。

如果您想将 Cordova 插件集成到您的应用程序中,您可以使用 Crosswalk
Cordova https://crosswalk-project.org/#documentation/cordova带来
Cordova 生成的 Android 应用程序的 WebRTC 功能。 启动后
使用 Crosswalk Cordova 的 HelloWorld 模板
https://crosswalk-project.org/#documentation/cordova/develop_an_application
我能够构建 SIP.js 演示电话http://sipjs.com/demo-phone/
通过用演示手机资产替换 assets/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 需要做什么才能使用 PhoneRTC 插件处理 iOS 上的音频呼叫,所以我计划今晚开始进行概念验证,因为我正在个人对演示此用例感兴趣。

一般的想法是,使用 SIP.js 的 iOS 应用程序不会使用默认的SIP.WebRTC.MediaHandler (这取决于 JS 可以直接访问 PeerConnection,我们已经看到这在 iOS 上还不是特别可行),但将提供一个自定义的MediaHandler其方法调用到PhoneRTC插件。

我们希望您考虑将 SIP.js 用于您的应用程序,因此我一定会及时通知您我的实验进展情况。

@joseph-onsip,根据我们的讨论,我的理解是您所做的更改是 javascript 应用程序级别的更改。 自定义媒体处理程序应与任何实现 phoneRTC api 的平台兼容,并且不限于 iOS。

这真是个好消息。 如果您取得任何进展,我很乐意在本周末对您的 POC 进行试验。

好吧,我已经取得了一些进展。 下面是一个应用程序,可以使一个WebRTC使能-SIP呼叫在桌面浏览器(我用的测试端点上运行SIP.js演示手机在Chrome)。

目前,它只适用于 Android,因为这是我开发的对象,我不得不对 phonertc 插件进行一些小改动。 如果对 iOS 插件代码进行相同的更改,我希望该应用程序也能在该平台上运行,除非 WebRTC 实现中存在任何特定于平台的差异。

哇。 从查看您的代码来看,让它工作似乎相当简单。 您只是用PhoneRTCMediaHandler覆盖了mediaHandlerFactory (以及您对 PhoneRTC 插件的更改)并且它“正常工作”?

编辑:起初我认为 PhoneRTCMediaHandler 包含在 PhoneRTC 中,但我现在意识到你写的,这一切都更有意义。

它“刚刚工作”?

好吧,我只能在 Android 和 Chrome 之间传输音频(目前只能传输到 Chrome,但我发誓我上次评论时它可以正常工作。我认为是我手机上的应用程序没有正确播放流,所以我正在考虑修改插件以使其一致工作),但是是的,我们已经尝试使 SIP.js 在这方面非常可配置。 我大量参与了使这种事情成为可能的重构,这也是我有兴趣将它的一个工作示例放在一起的原因之一。

我认为是我手机上的应用程序没有正确播放流

呃,结果证明这是我笔记本电脑上的 WebRTC 问题。 重新启动修复了它。

此外,我能够在呼叫 _from_ Chrome _to_ Android 时获得双向音频(我之前只让另一个方向工作)。 我只需要确保 Chrome 只提供音频而不提供视频。

我仍然无法调用 Firefox,所以我为此提出了问题

Android L 内置了 WebRTC 支持。
我们已经创建了一个iOS Cordova 插件
sipjs.com上提供了

有没有计划将它移植到phonertc 2?

@thomasquintana正致力于将其移植到 phonertc 2.0。 它快完成了。

@alongubkin现在整理松散的部分……尽快寻找拉取请求。
分叉: https :

@egreenmachine这是媒体处理程序的更新版本,可与上述 fork 一起使用(或稍后会使用)。 还支持多个会话:
https://github.com/BetterVoice/PhoneRTCMediaHandler

由于其他来源的信息似乎有点分散,而且最近进行了修改,现在推荐的移动集成方式是什么@egreenmachine?

我在这里没有什么要报告的,你可能会从我删除里程碑中看出。 我可以说在内部我们正在开发一个使用 NativeScript 并由 SIP.js 支持的移动应用程序。 我希望可能有一些面向公众的结果将允许 SIP.js 用户以简单的方式做同样的事情。 然而,现在下定论还为时过早。 话虽如此,绝对可以使用原生 WebRTC 驱动程序、SIP.js 和 NativeScript 来制作移动应用程序。 一旦我有更多要分享,我会更新这个问题。

@cybrox SIP.Js 0.7.8 版可以在 Cordova 上运行,Android 上的 crosswalk 和 iOS 上的 iosrtc,但是 SIP.Js 0.9.2 在 RTC 上有一些错误。

@egreenmachine 也请在

@greenmachine对你们使用 nativescript 获取 sipjs 的努力感到好奇。 我正在使用cordova应用程序运行sipjs 0.7.8,但由于sipjs不再支持cordova以寻找潜在的替代品。

如果你不介意分享你们使用 nativescript 的方法? 你们在使用原生的 webrtc 吗?

@andrewvmail我们最终使用了原生 WebRTC 并创建了一个自定义 SDH 来与之交互。 虽然我说的很简单,但远非如此。 在这一点上,我认为我们不会公开实施。 运行起来非常困难,我们预计我们必须承诺公开支持它的时间太长。 此外,它适用于我们的应用程序,但它是一个非常具体的实现。 我们必须努力使其通用,我们预计人们会在尝试开箱即用时遇到问题。 从社区活动中我们看到,似乎大多数人都想要一些开箱即用的东西,只需一些简单的配置参数。 这不会是真的。

对于移动设备,我们的目标支持将是主要的移动浏览器。 这将是 Android 上的 Chrome 和 iOS 上的 Safari。 如果人们想为他们为其他环境创建的 SDH 提交 PR,我们将欢迎。

我希望这可以清除一些围绕移动的云。 如果您有任何其他问题或意见,请与我们联系。

我还最终编写了一个自定义 SDH 来仔细地连接 SIP。 [email protected]与提供的cordova/iOS WebRTC 实现。 它让我解决了科尔多瓦抱怨 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 取得了成功,这可能是阻力最小的路径。

您好,请问可以支持百度浏览器吗? 可以注册,也可以发信息,不能拨号

此页面是否有帮助?
0 / 5 - 0 等级