在处于非活动状态时保持iPhone网络连接活动?

时间:2011-10-25 01:37:35

标签: iphone objective-c xcode sockets background

我正在开发一个连接聊天服务器的聊天客户端应用。当我收到任何弹出通知(例如,短信)时,iPhone会将应用置于非活动状态 - 很棒。我遇到的问题是,一旦通知被取消,该应用程序已丢失所有网络连接。我读过其他地方,这不应该发生,但我不确定我错过了什么!

以下是我用来创建读写流的代码片段。

- (void) initNetworkCommunication {

//set up read and write streams
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;

//connect to host at this address and this port
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"somewebsite.org", 3333, &readStream, &writeStream);

//open socket connection
inputStream = [(NSInputStream *)readStream retain];
outputStream = [(NSOutputStream *)writeStream retain];
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
}

将应用程序发送到后台时,网络连接也会丢失。我也想解决这个问题,但现在的主要问题是弹出通知会断开用户连接。

1 个答案:

答案 0 :(得分:0)

您在应用程序的“applicationWillResignActive:”方法中做了什么?您可以考虑暂停连接,然后在应用再次处于活动状态时重新启动连接。无论哪种方式,你应该在该方法中做一些事情。

希望有所帮助。