Jak obsługiwać zdarzenia połączenia z gniazdem, gdy aplikacja jest w tle?
Chcę użyć następującej funkcji, nawet gdy aplikacja jest w tle?
- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent
{
case NSStreamEventHasBytesAvailable:
{ NSLog(@"Event:NSStreamEventHasBytesAvailable");
if (theStream == _inputStream) {
NSLog(@"NSStreamEventHasBytesAvailable: on Input Stream");
uint8_t buffer[1024];
int len;
while ([_inputStream hasBytesAvailable]) {
len = [_inputStream read:buffer maxLength:sizeof(buffer)];
if (len > 0) {
NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];
if (nil != output) {
NSLog(@"server said: %@", output);
// to get local notification I am calling below method.
[self scheduleNotification];
}
}
}
}
break;
}
Powyższy kod działa w ForeGround. Zrobiłem całą zmianę podaną w dokumencie Apple do uruchomienia aplikacji w trybie tła - voip. Co powinienem napisać w metodzie AppDelegate?
- (void)applicationDidEnterBackground:(UIApplication *)application
{
}
Jak pobrać strumień: handleEvent wywołany w tle?