2016-01-22 46 views
0

在我正在处理的应用程序中,我让用户使用密码作为其TouchID的备份。显然,出于安全原因,这个密码应该有某种形式的类似于iPhone锁定屏幕的“超时”。错误密码的iOS超时

什么是最好的方法来实现这一目标?

我最初的想法是保存用户最后一次不正确的尝试,并进行检查,看看它是否超过当前日期的x分钟数。

我认为这将在实践中起作用,然而将它绑定到系统时钟绝对不是最安全的方法。

任何有关此事的帮助将不胜感激。

回答

1

我已经在几个应用程序中实现了这种形式。我通常所做的就是使用一个计时器,该计时器在用户与应用程序交互时开始(并且如果存在则取消前一个计时器)。当时间用完时,则运行超时方法。
是这样的:

- (void)pressedButton:(UIButton *)button { 
    // record button press 

    [self scheduleInteractionTimer]; 
} 

- (void)scheduleInteractionTimer { 
    if (_timeoutTimer) { 
    [_timeoutTimer invalidate]; 
    } 
    _timeoutTimer = [NSTimer timerWithTimeInterval:timeoutTime target:self selector:@selector(timeoutTripped) userInfo:nil repeats:NO]; 
    _timeoutTimer.tolerance = 5.0; // optional 
    [[NSRunLoop mainRunLoop] addTimer:_timeoutTimer forMode:NSRunLoopCommonModes]; 
} 

- (void)timeoutTripped { 
    // whatever should be done for a timeout... 
} 

你肯定可以配合-scheduleInteractionTimer不正确的反应或其他任何你想。

编辑:我也建议解除应用程序进入后台时的密码视图。

干杯

安东尼