【代码笔记】iOS-密码在进入后台1小时后重新设置

代码:

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

时间: 2024-09-27 04:34:54

【代码笔记】iOS-密码在进入后台1小时后重新设置的相关文章

IOS 7四种后台机制

本文总结了IOS7中的几个后台处理方式,特酷吧摘录部分如下.原始链接:http://mobile.hiapk.com/evaluate/special/131012/1457001.htmlIOS 7中,实际上APP拥有四种后台模式,无论是哪一种后台机制,均需要利用苹果给予的相应后台接口实现.IOS7系统中,开发者可以灵活利用多种后台接口(API)实现更加智能的应用操作.一,无后台仅推送第一种后台方式为传统的无后台操作,仅有苹果推送机制,这种方式出现在iOS 3.x以下的大部分系统版本上.这个方

iOS开发笔记--iOS动画总结

摘要 本文主要介绍核iOS中的动画:核心动画Core Animation, UIView动画, Block动画, UIImageView的帧动画. 核心动画Core Animation UIView动画 Block动画 UIImageView的帧动画 iOS中的动画 Core Animation CAAnimation: CAPropertyAnimation CAKeyframeAnimation CATransition UIView动画 Block动画 UIImageView的帧动画 UI

iOS密码框实现(二)取消确定按钮

由于将确定按钮去掉了,所以需要重新修改下代码,当输入第四个数字时,自动进入房间. iOS 密码框效果图: 实现方式: 首先声明一个block初始化方法,因为这只是个框框,并不需要处理网络请求等等,需要提供一个block给调用方,调用方利用block 去拿到密码,利用密码做一些开房间等操作. 利用计时器通过0.2秒来看清输入第四位密码,用户输入4位密码后自动进入下一步操作. 1.头文件需要定义: @classIDSGameRoomSecretView; typedefvoid(^selfhandl

WWDC 2014 Session笔记 - iOS界面开发的大一统

本文是我的 WWDC 2014 笔记 中的一篇,涉及的 Session 有 What's New in Cocoa Touch Building Adaptive Apps with UIKit What's New in Interface Builder View Controller Advancements in iOS 8 A Look Inside Presentation Controllers iOS 8 和 OS X 10.10 中一个被强调了多次的主题就是大一统,Apple

iOS解决应用进入后台后计时器和位置更新停止的问题

由于iOS系统为"伪后台"运行模式,当按下HOME键时,如程序不做任何操作,应用会有5秒的执行缓冲时间,随机程序被挂起,所有任务终端,包括计时器和位置更新等操作,但程序打开后台模式开关后,部分任务可以再后台执行,如音频,定位,蓝牙,下载,VOIP,即便如此,程序的后台运行最多可以延长594秒(大概是10分钟).不幸的是,程序在声明后台模式后很有可能在app上架时被拒.基于此,我研究出了不用申明后台模式就能让计时器和定位在app进入前台时继续运行的方法. 实现原理如下: 利用iOS的通知

iOS申请持续的后台时间

iOS申请持续的后台时间 分类:IOS开发相关 (877)  (0) 由于苹果的后台机制,当我们按下home键的时候,所有线程包括主线程的任务都会被挂起,一些资源比如socket也会被系统回收,会导致很多问题,比如一个很重要的资源中断下载,或者定时器方法被暂停等等. 苹果在4.0以后提供了一种申请后台时间的机制: - (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void (^)(void))handl

iOS开发笔记--iOS开发规范

iOS开发规范 原文地址:http://blog.csdn.net/pjk1129/article/details/45146955 引子 在看下面之前,大家自我检测一下自己写的代码是否规范,代码风格是否过于迥异阅读困难?可以相互阅读同伴的代码,是否存在阅读障碍? 若存在晦涩难懂的,理解成本增大的代码,说明你的团队需要自省了. 下面总结一下OC编程中的一些代码规范(苹果官方推荐的).以OC为示例,但不局限于OC,也可以被当作别的编程语言的开发规范约定(仅需要把OC特有的东西按照你所使用的语言的惯

ios实现程序切入后台,实现后台任务

- (void)applicationDidEnterBackground:(UIApplication *)application { // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in

多线程二(GCD)代码笔记

// // TWFXViewController.h // Demo_GCD // // Created by Lion User on 12-12-11. // Copyright (c) 2012年 Lion User. All rights reserved. // #import <UIKit/UIKit.h> @interface TWFXViewController : UIViewController @property (retain, nonatomic) IBOutlet