FreeSwitch iPhone应用程序通信问题

时间:2011-11-29 23:25:27

标签: ios sip pjsip freeswitch sip-server

我有一个基于pjsip的应用程序来做一些Sip调用。

该应用程序适用于其他SIP交换机/服务器但使用freeSwitch应用程序未在后台模式下接收呼叫。

使用freeSwitch,当应用程序处于活动状态时一切正常,但在后台模式下,应用程序不会收到有关该呼叫的通知。它可能与freeSwitch如何通知应用程序有关新调用的方式有关(对于iOS pjsip,通知应该出现在TCP包装的套接字上)。

任何人都知道如何配置fresSwitch在特定端口上发送通知?

2 个答案:

答案 0 :(得分:0)

我通过添加:

来解决这个问题
<variable name="sip-force-contact" value="NDLB-connectile-dysfunction"/>

到变量下的freeswitch_install_folder / conf / directory / default / XYZ.xml(其中XYZ是您正在配置的用户)。

答案 1 :(得分:0)

你不想在Freeswitch上使用iOS的ndlb-connectile-dysfunction(ndlb)。这样做可以保证您不能在足够长的时间内保持注册,以便在后台使用,因为当设置该选项时,Freeswitch会将“expires = 30”附加到所有注册。之后,在尝试呼叫该用户时,您只会收到“USER_NOT_REGISTERED”错误,除非它恰好在注册呼叫后的30秒内。

您需要执行的操作是按照此处的步骤操作: http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072-CH7-SW12

具体做法是:

1)确保运行iOS keep-alive计时器(setKeepAliveTimeout:handler :),处理程序块以最小值(600秒)重新注册。

2)确保您的应用在其Info.plist中配置为VOIP 音频播放后台模式

3)确保您的客户正在注册用于VOIP使用的网络流接口,如Apple指南中所述。这样,操作系统可以让应用程序进入休眠状态,但如果在该网络流上发生传入流量,则会将其唤醒。

如果你完成所有这三个,你应该可以在iOS 5的后台运行voip,即使屏幕已锁定。