2012-02-07 50 views
6

我開發的應用程序當前設置爲「基於位置」,因此它可以無縫地在後臺運行。當用戶移動時,我不需要它做任何事情。 經過一番搜索之後,我瞭解到這個應用只會在發生位置變化時執行代碼,10分鐘後任何計時器都無法執行任何代碼。XMPP框架 - 在後臺連接的基於位置的應用程序

我的應用程序在後臺保持與XMPP連接50分鐘左右,然後斷開連接。我希望應用程序永遠不會斷開,我查看了框架,但找不到解決此問題的地方。你知道是否有可能保持連接「indefinetly」?如果是的話,我必須在xmppframework中更改哪些設置。

感謝

[編輯] 後50分鐘的用戶仍然連接到XMPP但它斷開它conected的XMPPRooms的。 在另一次運行中,它連接了3個小時,iPhone連接的時間似乎不一致。

+0

如果它僅與XMPPRooms斷開連接,那麼它可能與您在後端維護持續50分鐘的會話有關。 – tipycalFlow 2012-02-07 12:36:20

+0

我已將我的服務器設置爲:_不要斷開閒置的客戶端。_ 您的意思是什麼設置? – subharb 2012-02-07 13:44:29

+0

我指的是房間的會話,如果它們與用戶會話不同。您在編輯中提到用戶會話保持不變,但XMPPRooms已斷開 – tipycalFlow 2012-02-08 04:19:45

回答

0

要確保您的應用程序可以發送和接收保持活動消息,它需要是一個voip應用程序並使用voip套接字。從Apple's Documentation

  1. 添加UIBackgroundModes關鍵看你的應用程序的Info.plist文件。將此密鑰的值設置爲包含voip值的數組。
  2. 配置應用程序的其中一個插座用於VoIP使用。
  3. 在轉到後臺之前,請調用setKeepAliveTimeout:handler:方法來安裝要定期執行的處理程序。您的應用可以使用此處理程序來維護其服務連接。

至於套接字:

NSInputStream和NSOutputStream:對於可可流,使用setProperty:forKey:方法將NSStreamNetworkServiceType屬性添加到流中。該屬性的值應該設置爲NSStreamNetworkServiceTypeVoIP。

相關問題