【代碼筆記】iOS-密碼在進入後台1小時後重新設定,ios-後台
代碼:
AppDelegate.m
#import "AppDelegate.h"#import "ViewController.h"@interface AppDelegate ()@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. //當程式在後台停留超過60分的時候,密碼會置為空白。 //1小時後將密碼重新設定 [self timeInterval]; return YES;}- (void)applicationWillResignActive:(UIApplication *)application { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.}- (void)applicationDidEnterBackground:(UIApplication *)application { //計算時間差 [self backTime];}- (void)applicationWillEnterForeground:(UIApplication *)application { //1小時後將密碼重新設定 [self timeInterval];}- (void)applicationDidBecomeActive:(UIApplication *)application { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.}- (void)applicationWillTerminate:(UIApplication *)application { //計算時間差 [self backTime];}#pragma -mark -密碼儲存1個小時//計算時間差- (void)timeInterval{ NSLog(@"---timeInterval----"); //設定一個字串的時間 NSString * dateBackString = [[NSUserDefaults standardUserDefaults] objectForKey:@"backGroundTime"]; NSLog(@"---dateBackString---%@",dateBackString); if ([dateBackString isEqual:[NSNull null]] || dateBackString==nil || dateBackString.length ==0) { } else { NSInteger time = [self getTimeInterval:dateBackString]; if (time >= 60) { //1小時後將密碼清空 NSUserDefaults *userInfoDefault=[NSUserDefaults standardUserDefaults]; [userInfoDefault setObject:@"" forKey:@"login-password"]; [userInfoDefault synchronize]; } }}//1小時後將密碼重新設定- (void)backTime{ NSLog(@"----backTime-----"); //計算上報時間差 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //結束時間 NSDate * currentdate = [NSDate date]; NSString * currentDateString = [dateFormatter stringFromDate: currentdate]; NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; [userDefaults setObject:currentDateString forKey:@"backGroundTime"]; [userDefaults synchronize];}//計算時間差- (NSInteger)getTimeInterval:(NSString *)sendDateString{ NSInteger minute; if (sendDateString ==nil||sendDateString.length==0) { } else { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //結束時間 NSDate * currentdate = [NSDate date]; NSDate * currentDate = [dateFormatter dateFromString:[dateFormatter stringFromDate: currentdate]]; NSDate * endDate = [dateFormatter dateFromString:sendDateString]; //得到時間差 NSTimeInterval time = [currentDate timeIntervalSinceDate:endDate]; // int days = ((int)time)/(3600*24); // int hours = ((int)time)%(3600*24)/3600; // minute = ((NSInteger)time)%(3600*24)/3600/60; minute = (NSInteger)time; } return minute;}@end