У меня проблема с тем, что мой NSTimer не работает, когда приложение работает в backgroud. на симуляторе это работа, на устройстве это не так.NSTimer не работает в фоновом режиме
мой код на AppDelegate.m:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
NSLog(@"enter background");
notiTimer = [NSTimer scheduledTimerWithTimeInterval:4 target:self selector:@selector(checkNotification) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:notiTimer forMode:NSDefaultRunLoopMode];
}
и метод, который я пытаюсь запустить в цикле:
-(void)checkNotification {
NSLog(@"running loop in bg");
userdetails =[NSUserDefaults standardUserDefaults];
userid = [userdetails objectForKey:@"userid"];
username = [userdetails objectForKey:@"username"];
if (userid != NULL && username != NULL) {
notifString = [NSString stringWithFormat:@"userid=%@", userid];
notifData = [NSData dataWithBytes: [notifString UTF8String] length: [notifString length]];
urlreq = [[NSMutableURLRequest alloc] initWithURL:notifUrl];
[urlreq setHTTPMethod: @"POST"];
[urlreq setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
[urlreq setHTTPBody: notifData];
sendreq = [NSURLConnection sendSynchronousRequest:urlreq returningResponse:nil error:nil];
response =[[NSString alloc] initWithBytes:[sendreq bytes] length:[sendreq length] encoding:NSUTF8StringEncoding];
responsTrimmed = [response stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
splitResponse = [responsTrimmed componentsSeparatedByString: @","];
if ([splitResponse[0] isEqualToString:@"1"]) {
NSLog(@"%@",splitResponse[1]);
}
else {
NSLog(@"err");
}
}
}
сейчас раз в приложении войти фону я получаю в отладчике NSLog:
NSLog(@"enter background");
, но цикл запуска не работает, и метод не вызывает в цикле, и я не получаю NSLo g
NSLog(@"running loop in bg");
на отладчике, любая идея?
Да, конечно, нет, когда приложение переходит на задний план, оно приостановлено, включая все 'NSTimer'. есть некоторые службы, которые могут запускаться _after_, приложение становится неактивным, но 'NSTimer' не входит в список. – holex