2016-03-21 2 views
0

Je crée un jeu dans lequel l'utilisateur est récompensé lorsque l'application est en arrière-plan ou ne fonctionne pas. Si l'application est complètement fermée, ils devraient quand même obtenir des points. Actuellement, je le fais en utilisant un NSTimer, mais j'ai lu partout que les timers ne peuvent pas s'exécuter en arrière-plan. Voici ce que j'ai et comment dois-je fixer:Exécuter des tâches d'évaluation en jeu en arrière-plan-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

Il est possible d'autoriser l'exécution de tâches en arrière-plan lorsque votre application est en arrière-plan. Lorsque vous passez ce temps, vous ne pouvez plus exécuter de tâches. Vous devriez regarder dans les notifications au lieu d'exécuter des tâches en arrière-plan. –

+0

Je vais regarder dans ce @TejaNandamuri – John55

Répondre

1

Vous pouvez définir une « heure de fin » avec NSUserDefault dans la méthode applicationDidEnterBackground. Dans applicationDidBecomeActive vous obtenez le temps écoulé depuis la "heure de fin" et vous définissez votre score à partir de ce temps écoulé.

+0

D'accord, mais comment pourrais-je obtenir le temps écoulé à partir de l'heure de fin – John55