2011-09-22 145 views
4

我想我有所有要求,當應用程序在後臺時有一個「活着」的套接字。也就是說:當應用程序在ios中後臺時接收voip電話

  • 我的應用程序有voip和音頻作爲它的背景模式。
  • 我正在使用PJSIP作爲SIP庫,應該使用CFReadStreams並啓用「在後臺運行」屬性
  • 該應用程序正在使用TCP建立與SIP服務器的連接。

當應用程序發送到後臺時,它會添加一個後臺處理程序,它會在每個時間段發送一個「keepAlive」消息。

That keepAlive似乎正在工作。如果我檢查服務器中的日誌,即使應用程序不在前臺,我也可以看到消息是如何到達的。

問題(和問題)是,當應用程序處於後臺時,我沒有收到呼叫。

看起來套接字還活着,如果我在手機上撥打電話而前臺沒有應用程序,則沒有任何反應,但如果我自己啓動應用程序,則會自動檢測到該通話。

謝謝:)

+1

我正在提取相同的問題,你是如何解決它的。你能幫我嗎。 – Salim

+0

如何獲得來電提示或查看?請幫助我! –

回答

4

我們發現了這個問題。

考慮到當前的配置,服務器使用不同的連接從手機使用的初始TCP套接字發送INVITE請求,以發送初始REGISTER請求。

由於兩個插座不同,操作系統沒有喚醒應用程序。

如果您配置服務器(在我們的情況下爲Kamailio)重用電話用來發送第一個REGISTER的初始套接字,它可以無縫工作。

默認情況下,SIP服務器似乎爲每個要發送到手機的INVITE請求創建新的套接字。這種情況對iphone背景模型來說是個問題。

相關問題