IOS 之 PJSIP 笔记(二) iPJSUA 的简单使用

时间:2021-09-04 14:15:39

上一篇在编译完之后,就很不负责的结束了,本篇就对 PJSIP 库中提供的一个示例 iPJSUA 的使用,做一个简单的介绍。也能解除很多人对官方文档的一个困扰,起码我是被困扰过了。

首先,要确保你的 PJSIP 的库和你即将要编译的平台对应,或者你直接使用上一篇博文最后链接下载的库,那样不用做任何配置,因为它相应的 lib 文件夹中的库,都是支持多平台的。

打开位于:pjsip-apps/src/pjsua/ios/ 下的 ipjsua.xcodeproj ,command + r ,运行该项目,如果编译不成功,请参看我上面说的那句话;如果提示缺少 ”libmilenage-arm-apple-darwin9.a“,删除项目 Libraries 文件夹中,对应的该文件:

IOS 之 PJSIP 笔记(二) iPJSUA 的简单使用

再次 command + r,应该不会出什么问题了,那么你将看见如下的界面:

IOS 之 PJSIP 笔记(二) iPJSUA 的简单使用

很直观的一个界面,它叫你 telnet 到一个指定的地址和端口,那么从你的 mac 或者其它能和你电脑通讯的机器上 telnet 相应的地址即可。进去后,就可以参考 PJSUA-CLI 中的指令来进行相应操作了。

由于我的 mac 是安装在虚拟机中的(屌丝。。。),宿主系统是 win7,那么我在我的 win7 中搭建一个 SIP 服务器,和添加一个 SIP 客户端,来做一个最基本的使用演示。这里使用 miniSIPServer 和 miniSIPPhone 来作演示,从这里下载试用版:

IOS 之 PJSIP 笔记(二) iPJSUA 的简单使用

下载后,安装,打开即可:

IOS 之 PJSIP 笔记(二) iPJSUA 的简单使用

SIP 帐号和密码,对应着分机里面的设定,默认它已经给我们建立了几个,账户和密码一样,以下是 SIPPhone 客户端帐号配置(账户名、密码:101,对应分机配置):

IOS 之 PJSIP 笔记(二) iPJSUA 的简单使用

这样我们的服务器搭建好了,并且有这么一个客户端,这样就可以在 mac 中与该服务器和客户端进行通讯了,大家可以看到,我这里主系统的 IP 为  192.168.1.100,那么你们要视自己实际情况而定了。

首先从 mac 系统的终端中 telnet 模拟器中提示的地址和端口,进入后,我们参考文档上,注册一个账户(类似于登录到服务器上,并不是新增加一个帐号,也就是说该账户服务器上必须要有)的命令是: acc add,这里有个技巧,当我们不知道后面怎么输入参数时,就按 tab 键,它会给我们提示。这里我们输入 acc add 然后按 tab 键(一次没反应,就再按一次):

IOS 之 PJSIP 笔记(二) iPJSUA 的简单使用

它提示要我们输入 SIP URL,然后我们输入 sip:102@192.168.1.100 ,再按 tab 它又会提示输入 SIP 注册服务器的地址,当然熟悉了之后,并不需要这样一直按 tab,直接如下:

IOS 之 PJSIP 笔记(二) iPJSUA 的简单使用

参数的意义分别是: 用户的 SIP 地址,注册服务器地址,Realm,用户名,密码,回车后,显示注册成功,这时候,我们看下 miniSIPServer 的分机列表:

IOS 之 PJSIP 笔记(二) iPJSUA 的简单使用

此时 102 分机已经在线了,现在对 101 发起一次呼叫:

call new sip:101@192.168.1.100

OK,这时听到 miniSIPPhone 振铃了,我们点击接听即可接通:

IOS 之 PJSIP 笔记(二) iPJSUA 的简单使用

上图为分机在通话中的状态,我们挂断它,终端输入:

call hangup

这时我们的通话被终结了,最后,我们来接一通电话,从 miniSIPPhone 中,直接呼叫 102:

IOS 之 PJSIP 笔记(二) iPJSUA 的简单使用

这时候,我们在 mac 的 telnet 终端中输入 call list , 会看到一个状态为 incoming 的呼叫:

IOS 之 PJSIP 笔记(二) iPJSUA 的简单使用

我们输入 : call answer 200,即可接入,其中 200 为状态码(和 http 的状态码类似)。

IOS 之 PJSIP 笔记(二) iPJSUA 的简单使用

OK,到这里,这个 iPJSUA,你应该知道怎么玩了吧~~ 其实很简单的嘛~