我有一个基于pjsip的应用程序来做一些Sip调用。
该应用程序适用于其他SIP交换机/服务器但使用freeSwitch应用程序未在后台模式下接收呼叫。
使用freeSwitch,当应用程序处于活动状态时一切正常,但在后台模式下,应用程序不会收到有关该呼叫的通知。它可能与freeSwitch如何通知应用程序有关新调用的方式有关(对于iOS pjsip,通知应该出现在TCP包装的套接字上)。
任何人都知道如何配置fresSwitch在特定端口上发送通知?
答案 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,即使屏幕已锁定。