2016-03-21 2 views
0

Я создаю игру, в которой пользователь получает очки, когда приложение находится в фоновом режиме или не работает. Если приложение полностью закрыто, они все равно должны получать очки. В настоящее время я делаю это с помощью NSTimer, однако я везде читал, что таймеры не могут выполняться в фоновом режиме. Вот что у меня есть и как я должен это исправить:Исключить подсчет очков в игре в фоновом режиме Цель-c

- (void)applicationDidEnterBackground:(UIApplication *)application { 
    score = [[NSUserDefaults standardUserDefaults] integerForKey:@"score"]; 
    [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil]; 
    timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(score) userInfo:nil repeats:YES]; 
    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; 
} 

-(void) score{ 
    score++; 
    [[NSUserDefaults standardUserDefaults] setInteger:score forKey:@"score"]; 
} 
+0

Существует определенное время, позволяющее запускать фоновые задачи, когда ваше приложение находится в фоновом режиме. Когда вы пройдете это время, вы больше не сможете выполнять какие-либо задачи. Вы должны искать уведомления вместо запуска задач на фоне. –

+0

Я посмотрю, что @TejaNandamuri – John55

ответ

1

Вы можете установить «время окончания» с NSUserDefault в applicationDidEnterBackground методом. В applicationDidBecomeActive вы получаете истекшее время с момента окончания, и вы устанавливаете свой счет с этого прошедшего времени.

+0

Хорошо, но как бы получить прошедшее время с конца – John55