这个需求是产品提出的
- 本来我们是按了Home键之后,再进入程序就会弹出手势解锁界面,但是产品说需要5分钟之内不用弹出手势解锁.
- 最开始的想法是在
- (void)applicationDidEnterBackground:(UIApplication *)application{}
中加入一个线程,在5分钟之后改变一个BOOL值变量,然后根据变量来进行判断是否弹出,在无数坑之后,发现很难实现. - 然后想到了一个好方法
-
在进入后台时记录下推出时间
- (void)applicationDidEnterBackground:(UIApplication *)application{
[[NSNotificationCenter defaultCenter] postNotificationName:kNotificationCenter object:nil];// 程序进入后台 记住进入后台的时间 NSDate *startTime = [NSDate date]; [[NSUserDefaults standardUserDefaults] setObject:startTime forKey:@"START"]; [[NSUserDefaults standardUserDefaults] synchronize]; }
-
在回归前台时与退出后台时间比较
- (void)applicationWillEnterForeground:(UIApplication *)application{
// 程序回归前台,提取进入后台时间
NSDate *finalTime = [NSDate date];
NSTimeInterval final = [finalTime timeIntervalSince1970];// 进入后台时间 与 现在时间对比 NSDate *startTime = [[NSUserDefaults standardUserDefaults] objectForKey:@"START"]; NSTimeInterval start = [startTime timeIntervalSince1970]; kDLog(@"退出后台到现在秒数是%f",final - start); // 如果大于5分钟,需要密码,小于5分钟,不需要密码 if ((final - start) > 300) { // 需要进行的操作 }else { return; } }
- 如上就是我想到的方法
网友评论