我正在开发一个应用程序,当它通过主页按钮在后台推送时,应该启动计时器,当应用程序返回到前台并且计时器已经过了一定的时间时,应该是执行。
我的问题是
非常感谢。
答案 0 :(得分:1)
在app的appDelegate中,您可以使用一些委托方法。
您可以查看AppDelegate应符合的UIApplicationDelegate协议。
当在后台推送应用程序时,将调用函数applicationDidEnterBackground:。当进入前台applicationWillEnterForeground:被调用。
最好不要使用计时器,而是在applicationDidEnterBackground:方法中存储NSDate引用。当您的应用程序进入前台时,您可以使用
使用存储的NSDate计算timeDifference- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate
功能
答案 1 :(得分:1)
可能的实现方式如下:
#define YOUR_TIME_INTERVAL 60*60*5 //i.e. 5 hours
- (void)applicationDidEnterBackground:(UIApplication *)application
{
//... your oder code goes here
NSNumber *timeAppClosed = [NSNumber numberWithDouble:[[NSDate date] timeIntervalSince1970]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults timeAppClosed forKey:@"time.app.closed"];
[defaults synchronize];
}
和
- (void)applicationWillEnterForeground:(UIApplication *)application
{
NSNumber *timeAppClosed = [[NSUserDefaults standardUserDefaults] valueForKey:@"time.app.closed"];
if(timeAppClosed == nil)
{
//No time was saved before so it is the first time the user
//opens the app
}
else if([[NSDate date] timeIntervalSinceDate:[NSDate dateWithTimeIntervalSince1970:[timeAppClosed doubleValue]]] > YOUR_TIME_INTERVAL)
{
//Place your code here
}
}