2012-01-09 40 views
5

我正在測試由iPhone應用程序開發人員使用PJSip編寫的VoIP客戶端。我本人自己玩弄了一些SIP開發,但我不是專家。Iphone的VoIP應用程序 - 背景和保持NAT針孔活着

通過我們的VOIP軟交換機(Acme packet/Broadsoft),它可以通過動態確定最佳的重新註冊時間來將Nat針孔保持在nat設備上。通常當iphone在NAT後面的時間在60-90秒之間。

Iphone應用程序正在使用TCP並且很高興地使用Backgrounding。顯然,背景是節省電池壽命的理想選擇。電話會喚醒電話,您可以聽電話。

問題是,當應用程序進入背景模式時,它無法保持Nat針孔打開。這意味着一旦針孔關閉,防火牆就會拒絕新的來電到達Iphone App。這會影響傳入呼叫到應用程序幾分鐘,然後不工作一段時間,然後當應用程序離開後臺並再次註冊時,呼入呼叫再次工作。

根據蘋果文檔: http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW3

他們有利於讓一個後臺,我們可以VoIP應用內置的特殊情況除外: 1.配置應用程序插槽,使得他們仍然可以處理傳入的消息。這沒有幫助,因爲如果NAT針孔關閉,消息傳遞將永遠不會到達應用程序。 2.使用保持活動狀態,但最短時間爲600秒。這也意味着針孔將關閉。

應用程序是否有一些聰明的方式可以發送Voip Sip註冊消息,例如每隔60秒左右留在背景中。或者,應用程序可以每60秒喚醒一次,然後關閉。

我真的很困惑,市場上是否有其他的SIP應用程序已經解決了這個問題。

+0

市場上有許多應用程序已經解決了這個問題。例如3CX應用程序。 – 2012-05-19 05:08:10

+0

你有沒有得到任何解決方案? – 2013-06-04 04:53:06

回答

-1

如果間隔時間不是太短,允許TCP保持活動狀態,我認爲這應該保持打開NAT會話。你能告訴我們是否有幫助嗎?

0

要解決此問題,請讓Acme向註冊的設備發送TCP保持活動,並將過期時間設置爲至少600秒。你可能希望它更高,因爲手機需要一些時間來重新註冊,所以像720的東西會更好。

如果將keepailve間隔設置得足夠低,大約需要30秒左右,這應該可以使NAT針孔保持打開狀態。 NAT應該允許更高的時間間隔,但這可能需要一些測試。

我知道ACME SBC可以處理這個問題。