私はこれを試しましたが、iOS 7とXcode 4.6.2では180秒以上動作しません。私を助けてください
UIBackgroundTaskIdentifier bgTask = UIBackgroundTaskInvalid;
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
}];
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:20 target:self selector:@selector(timerMethod) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
-(void) timerMethod{
NSLog(@"in timerMethod");
}
Background modes
のいずれかを有効にしない限り、機能しません。
この後、タイマーがiosによって停止されると、約10分のバックグラウンド実行があります。
IOSがフォアグラウンドアプリを一時停止し、bgTask
が再び起動しないため、アプリがロックされた後はタイマーは起動しません(iOS7)。
いくつかの回避策があります。以下の質問を確認することを検討してください: