1

我正在尝试添加一个功能,在某些推送时,我的计时器将启动,即使应用程序关闭,计时器也会继续。假设我的积分是 10,现在计时器开始了。一旦我关闭应用程序,也许下次如果我打开应用程序

1-如果在 20 分钟之前它会显示一个倒计时计时器正在运行

2-如果在应用程序再次启动 20 分钟后,它将增加点到 10。

现在什么样的计时器或课程可以帮助我做到这一点?

问候

4

3 回答 3

1

在您的应用程序终止委托中,将时间保存在 NSUserdefaults 中,当您启动应用程序时,将其读回并继续添加时间。

于 2013-01-18T13:38:21.943 回答
1

NSTimer即使您的应用程序处于后台,也不会持续超过600秒,请停止应用程序。

你可以这样做:

NSString *prevTimestamp = [NSString stringWithFormat:@"%d", 
                         [[NSDate date] timeIntervalSince1970]];

将其存储prevTimestamp在 中NSUserDefaults,然后在返回应用程序时,

NSString *nowTimestamp = [NSString stringWithFormat:@"%d", 
                         [[NSDate date] timeIntervalSince1970]];

时差将是[nowTimestamp floatValue] - [prevTimestamp floatValue]

于 2013-01-18T13:40:59.393 回答
0

在您的 applicationdelegate 中,您具有以下功能:

-(void)applicationDidEnterBackground:(UIApplication *)application;

-(void)applicationWillEnterForeground:(UIApplication *)application;

从这些函数中,您可以通过以下方式跟踪时间:

-(void)applicationDidEnterBackground:(UIApplication *)application
{
    backgroundTime = [[NSDate date] timeIntervalSince1970]; 
}

-(void)applicationWillEnterForeground:(UIApplication *)application
{

    double timetoAppend = [[NSDate Date] timeIntervalSince1970] - backgroundTime];

    // from here you need to add the timetoAppend to your own variable

}
于 2013-01-18T13:44:00.580 回答