這個(gè)需求是產(chǎn)品提出的
- 本來我們是按了Home鍵之后,再進(jìn)入程序就會彈出手勢解鎖界面,但是產(chǎn)品說需要5分鐘之內(nèi)不用彈出手勢解鎖.
- 最開始的想法是在
- (void)applicationDidEnterBackground:(UIApplication *)application{}
中加入一個(gè)線程,在5分鐘之后改變一個(gè)BOOL值變量,然后根據(jù)變量來進(jìn)行判斷是否彈出,在無數(shù)坑之后,發(fā)現(xiàn)很難實(shí)現(xiàn). - 然后想到了一個(gè)好方法
-
在進(jìn)入后臺時(shí)記錄下推出時(shí)間
- (void)applicationDidEnterBackground:(UIApplication *)application{
[[NSNotificationCenter defaultCenter] postNotificationName:kNotificationCenter object:nil];// 程序進(jìn)入后臺 記住進(jìn)入后臺的時(shí)間 NSDate *startTime = [NSDate date]; [[NSUserDefaults standardUserDefaults] setObject:startTime forKey:@"START"]; [[NSUserDefaults standardUserDefaults] synchronize]; }
-
在回歸前臺時(shí)與退出后臺時(shí)間比較
- (void)applicationWillEnterForeground:(UIApplication *)application{
// 程序回歸前臺,提取進(jìn)入后臺時(shí)間
NSDate *finalTime = [NSDate date];
NSTimeInterval final = [finalTime timeIntervalSince1970];// 進(jìn)入后臺時(shí)間 與 現(xiàn)在時(shí)間對比 NSDate *startTime = [[NSUserDefaults standardUserDefaults] objectForKey:@"START"]; NSTimeInterval start = [startTime timeIntervalSince1970]; kDLog(@"退出后臺到現(xiàn)在秒數(shù)是%f",final - start); // 如果大于5分鐘,需要密碼,小于5分鐘,不需要密碼 if ((final - start) > 300) { // 需要進(jìn)行的操作 }else { return; } }
- 如上就是我想到的方法