我正在开发一个连接聊天服务器的聊天客户端应用。当我收到任何弹出通知(例如,短信)时,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];
}
将应用程序发送到后台时,网络连接也会丢失。我也想解决这个问题,但现在的主要问题是弹出通知会断开用户连接。
答案 0 :(得分:0)
您在应用程序的“applicationWillResignActive:”方法中做了什么?您可以考虑暂停连接,然后在应用再次处于活动状态时重新启动连接。无论哪种方式,你应该在该方法中做一些事情。
希望有所帮助。