내 앱은 백그라운드에서 실행되며 NSTimer를 사용하여 일정 시간 후에 오디오를 실행합니다. 나와 내 테스터는이 문제에 아무런 문제가 없으며 백그라운드에서 몇 시간 후에 오디오를 시작할 수 있습니다 (> 10 시간).배경 모드에서 NSTimer를 지연시킬 수있는 이유는 무엇입니까?
제 문제는 오디오가 종종 때로는 몇 분, 때로는 1 시간 지연되는 것으로보고하는 것입니다.
내가 그런 일을 할 수는 :
UIApplication * app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:nil];
dispatch_async(dispatch_get_main_queue(), ^{
theTimer = [NSTimer scheduledTimerWithTimeInterval:[theDateIWant timeIntervalSinceNow] target:self selector:@selector(playAudio) userInfo:nil repeats:NO];
});
내 질문
은 다음과 같습니다-Does
는 NSTimer는 시스템에 의해 그 정도 지연 될 수 있습니까? 그렇다면이 문제를 해결하는 방법은 무엇입니까? - 이런 종류의 문제를 재현하는 방법은 무엇입니까? - 다음을 사용하는 것이 더 안전합니까?theTimer = [[NSTimer alloc] initWithFireDate:theDateIWant interval:0.0 target:self selector:@selector(playAudio) userInfo:nil repeats:NO];
[[NSRunLoop mainRunLoop] addTimer:theTimer
forMode:NSDefaultRunLoopMode];
어떤 도움을 주셔서 감사합니다!
어떤 배경 모드를 사용합니까? –
백그라운드 오디오를 사용하고 내 코드의 다른 부분을 사용하여 백그라운드 실행 시간을 충분히 늘릴 수 있습니다. – OthmanT