0

我有一个基于 pjsip 的应用程序,用于进行一些 Sip 调用。

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

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

有人知道我如何配置 fresSwitch 以在特定端口上发送通知吗?

4

2 回答 2

0

我设法通过添加来解决这个问题:

<variable name="sip-force-contact" value="NDLB-connectile-dysfunction"/>

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

于 2011-12-02T23:21:16.377 回答
0

您不想将 ndlb-connectile-dysfunction (ndlb) 用于带有 Freeswitch 的 iOS。这样做将保证您不能将注册打开足够长的时间以在后台使用,因为当设置该选项时,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 保持活动计时器正在运行 (setKeepAliveTimeout:handler:),处理程序块以最小值(600 秒)重新注册。

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

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

如果你做到了这三个,你应该能够在 iOS 5 的后台运行 voip,即使屏幕锁定也是如此。

于 2012-01-28T22:19:37.733 回答