2012-03-01 41 views
0

我的在線應用在iPhone-3GS iOS 4.3上運行,使用NSStream與服務器進行通信。NSStream在鎖定手機後結束

當我最小化應用程序,鎖定手機,並重新啓動我的應用程序的流將結束。

所以我的應用程序失去了連接到服務器。

任何人都知道鎖定手機後如何保持連接?它是iOS多任務的特點嗎?

+1

在下面的SO問題 http://stackoverflow.com/questions/9481457/nsexception-kills-the-app-if-raised-in-background宣讀了答案導遊SCC – 2012-03-01 10:56:02

+0

您應該真正乾淨在進入後臺時建立所有正在進行的連接,並在進入前臺時重啓它們。如果你的應用是一個VoIP應用,而不是DarkDust所說的。 – 2012-03-01 13:05:31

回答

5

這是iOS的一項功能。後臺應用程序的網絡連接被切斷。您需要請求「VoIP」處理:爲此,您需要設置"voip" value for the Info.plist key UIBackgroundModes,然後將您的套接字標記爲使用CFReadStreamSetProperty設置kCFStreamNetworkServiceType of your socket to kCFStreamNetworkServiceTypeVoIP的VoIP套接字。

另請參閱Apple iOS App Programming Guide,部分開發VoIP應用程序的技巧

+3

@nminhtai:我只是補充說,如果你的應用程序不是一個VoIP應用程序,那麼你不應該這樣做,如果它是應用程序商店。 – 2012-03-01 13:04:11