我有一个基于pjsip的应用程序,用于做一些Sip呼叫。
该应用程序与其他SIP交换机/服务器工作正常,但与freeSwitch应用程序在后台模式下不接收呼叫。
使用freeSwitch,当应用程序处于活动状态时一切正常,但在后台模式下,应用程序不会收到有关调用的通知。它可能与freeSwitch如何将新调用通知应用程序有关(对于iOS pjsip,通知应该在TCP封装的套接字上发出)。
有没有人知道我如何配置fresSwitch在特定端口上发送通知?
我设法通过添加:
来解决这个问题<variable name="sip-force-contact" value="NDLB-connectile-dysfunction"/>
进入freeswitch_install_folder/conf/directory/default/XYZ.xml(其中XYZ是您正在配置的用户)下的变量
你不希望在iOS的Freeswitch中使用ndlb-connectile-dysfunction (ndlb)。这样做将保证你不能保持一个注册打开足够长的时间在后台有用,因为Freeswitch附加"expires=30"当该选项设置时,所有的注册。在此之后,当尝试调用该用户时,您将得到"USER_NOT_REGISTERED"错误,除非它恰好在注册调用后30秒内。
你需要做的是按照下面的步骤:http://developer.apple.com/library/ios/文档/iPhone/概念/iPhoneOSProgrammingGuide/AdvancedAppTricks AdvancedAppTricks.html #//apple_ref/doc/uid/TP40007072-CH7-SW12
专:1)确保你有一个iOS keep-alive定时器运行(setKeepAliveTimeout:handler:),处理程序块在最小值(600秒)处重新注册。
2)确保您的应用程序在其Info.plist 中配置为VOIP 和音频播放背景模式3)确保你的客户端正在注册网络流接口用于VOIP使用,如苹果指导方针中所述。这样,操作系统可以让应用程序进入睡眠状态,但如果网络流上出现传入流量,则唤醒你。
如果你做到了以上三点,你应该可以在iOS 5的后台运行voip,即使屏幕是锁定的。