2012-03-01 37 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