Ich erstelle ein Spiel, in dem der Benutzer Punkte belohnt, während die App im Hintergrund läuft oder nicht läuft. Wenn die Anwendung vollständig geschlossen ist, sollten sie dennoch Punkte erhalten. Momentan mache ich das mit einem NSTimer, aber ich habe überall gelesen, dass Timer nicht im Hintergrund ausgeführt werden können. Hier ist, was ich habe und wie ich es beheben:Scoring-Aufgaben im Spiel im Hintergrund ausführen objective-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"];
}
Es gibt eine bestimmte Zeitbegrenzung für die Ausführung von Hintergrundaufgaben, wenn Ihre App im Hintergrund ausgeführt wird. Wenn Sie diese Zeit verstreichen lassen, können Sie keine Aufgaben mehr ausführen. Sie sollten in Benachrichtigungen schauen, anstatt Aufgaben im Hintergrund auszuführen. –
Ich werde in das @ TejaNandamuri gehen – John55