我正在测试由使用 PJSip 的 iphone 应用程序开发人员编写的 Voip sip 客户端。我个人自己也玩过一些 SIP 开发,但不是专家。
使用我们的 VOIP 软交换(Acme 数据包/Broadsoft),它通过动态确定最佳重新注册时间来处理所有 Nat 处理,以使 Nat 针孔在 nat 设备上保持活动状态。通常,当 iphone 在 NAT 之后,这个时间在 60-90 秒之间。
Iphone 应用程序正在使用 TCP,并且可以愉快地使用 Backgrounding。显然背景是节省电池寿命的理想选择。来电唤醒手机,您可以接听电话。
问题是当应用程序进入后台模式时,它无法保持 Nat 针孔打开。这意味着一旦针孔关闭,防火墙将始终拒绝新来电到达 Iphone 应用程序。这会影响应用程序的来电工作几分钟,然后一段时间不工作,然后当应用程序退出后台并再次注册时,呼入电话再次工作。
他们为 voip 应用程序内置了特殊的后台例外,我们可以: 1. 配置应用程序套接字,以便它们仍然可以处理传入的消息。这无济于事,因为如果 nat 针孔关闭,消息将永远不会到达应用程序。2. 使用 Keep alive,但最短时间为 600 秒。这也意味着针孔将关闭。
应用程序是否可以通过某种巧妙的方式发送 Voip Sip 注册消息,例如每 60 秒左右,同时保持在后台。或者应用程序可以每 60 秒唤醒一次做一些工作然后关闭。
我真的很困惑市场上是否有其他 sip 应用程序可以解决这个问题。