ios - 在后台执行游戏中的评分任务 Objective-c

标签 ios objective-c nstimer uibackgroundtask

我正在创建一个游戏,当应用程序在后台运行或未运行时,用户可以获得积分奖励。如果应用程序完全关闭,他们仍应获得积分。目前我正在使用 NSTimer 执行此操作,但是我到处都读到计时器无法在后台执行。这是我所拥有的以及我应该如何修复它:

- (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"];
}

最佳答案

您可以在 applicationDidEnterBackground 方法中使用 NSUserDefault 设置“结束时间”。 在 applicationDidBecomeActive 中,您可以获得自“结束时间”以来耗时,并根据该耗时设置分数。

关于ios - 在后台执行游戏中的评分任务 Objective-c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36134759/

相关文章:

objective-c - 键值编码的要点是什么?

iphone - 移动 x 偏移时的 CGContextDrawImage

ios - 当虚拟键盘在 Mobile Safari 中打开时,如何阻止我的固定导航像这样移动?

ios - 将 UIViewController 中的文本附加到内置的 iphone 日历

iphone - __weak UIDataType *weakSelf 和 UIDataType __weak *weakSelf 之间的区别?

ios - 以编程方式使用 NSTimer 更新 UILabel 文本

IOS后台发邮件

手势处理程序中的iOS绘图上下文NULL

iphone - 通过 NSTimer UserInfo 传递数据

objective-c - 使用计时器检查 if 内的条件