4

有一些 ios sip 应用程序能够与仅 UDP 的 SIP 服务器进行通信。

据我所知,iOS 只允许 TCP 连接在后台保持打开状态,但大多数 SIP 提供商只支持 UDP。

我注意到 iOS 应用程序 3CXPhone 有一个“NAT 辅助模式”,它能够在后台与仅 UDP 的 3CX Phone 系统保持通信。有人知道他们使用什么技巧吗?我正在开发一个 SIP 应用程序,我必须使其适用于仅 UDP 的 SIP 提供商。

我知道在 SO 的后台有多个关于 UDP 套接字的问题,但没有一个问题有有用的答案,或者那里提出的解决方案不再有效(从 iOS 6 开始)。

到目前为止,我知道 2 种可能的解决方案: 1. 使用一些 GPS 事件,并在这些事件期间也保持套接字通信。之后尝试欺骗苹果并在商店中获取您的应用程序。2.在中间使用SIP代理(B2BUA)。但是在 3CXPhone “NAT 助手模式”中,我没有看到任何 sip 代理配置。

4

1 回答 1

0

如果你真的需要一个 UDP 套接字,你将需要一些东西:

  • UIRequiresPersistentWiFi:确保 iOS 连接到 Wi-Fi 并且在一段时间后不会将其关闭(我假设您也想要 Wi-Fi,如果不只是忽略这个)
  • 在后台循环播放空音频以保持应用程序处于活动状态。
  • 有一个每十秒左右弹出一次的计时器,并向服务器发送一条小的(例如crlf)消息。

最后一步是保持 UDP 连接在网络中打开。如果你不经常发送任何东西,网络中的某个人(例如路由器)会关闭它。

空的音频文件是确保您可以在短时间内(十秒计时器)在后台执行某些操作的唯一方法。

写完所有内容后:这将消耗大量电池。用户不会让您的应用长时间运行。

大多数现代 SIP 服务器都支持 TCP。你真的应该把时间花在 TCP 解决方案上。您的用户不会接受 UDP。

于 2013-03-09T12:27:56.940 回答