2011-11-29 151 views
0

我有一個應用程序基於pjsip做一些SIP呼叫。FreeSwitch iPhone應用程序通信問題

該應用可以很好地與其他SIP交換機/服務器配合使用,但freeSwitch應用在後臺模式下沒有收到呼叫。

隨着freeSwitch一切正常,當應用程序處於活動狀態,但在後臺模式時,應用程序未被通知有關通話。它可能與freeSwitch如何通知應用程序有關新調用有關(對於iOS pjsip,通知應該在TCP包裝套接字上)。

劑量任何人都知道我可以配置fresSwitch在特定端口上發送通知?

+0

您的應用程序是否註冊到FreeSWITCH?這可能是因爲註冊已超時,FreeSWITCH不知道您的應用端點在哪裏。調試7在FreeSWITCH中顯示的是什麼?你能解釋更多關於你之後的功能麼? –

+0

該應用程序已註冊,因爲如果我打開該應用程序(從後臺),我收到通話通知。 – alinoz

回答

0

我奶源中加入來解決這個問題:

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

到freeswitch_install_folder/conf目錄/目錄/默認/ XYZ.xml(其中XYZ是您所配置的用戶)下的變量。

0

你不想在Freeswitch中爲iOS使用ndlb-connectile-dysfunction(ndlb)。這樣做可以保證您無法在後臺打開足夠長時間的註冊,因爲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:處理器:),與處理器以最小值(600秒)進行重新註冊。

2)請確保您的應用程序配置爲VOIP 音頻播放背景模式它的Info.plist

3)請確保您的客戶端註冊爲使用VOIP網絡流接口在那些蘋果指出準則。這樣操作系統可以讓應用程序進入休眠狀態,但是如果在該網絡流上發生傳入流量,則會喚醒您。

如果你做了所有這三個,你應該可以在iOS 5的後臺運行voip,即使屏幕鎖定。

+0

您和應用程序提到的所有步驟是否與其他SIP服務器一起運行良好,但它在FreeSwitch服務器的後臺模式下無法使用。問題不在iOS端。 – alinoz

+0

您是否使用TCP進行SIP註冊?我在後臺模式下使用FreeSwitch和iOS 5沒有問題。無論如何,用戶將希望遠離NDLB設置。 –

+0

爲了澄清,如果您使用NDLB設置,它幾乎不會工作,並且它與iOS無關 - 這是因爲服務器沒有向手機發送任何內容,因爲註冊已過期30註冊後數秒。爲了從Freeswitch獲得更好的調試信息,它應該以:'> TPORT_LOG = 1開始。/ freeswitch' - 然後它只是確保服務器正在發送調用(在服務器日誌中可見),並且操作系統正在喚醒應用程序以接收它(在回調中放入日誌)。 –