我想创建一个计时器或类似的东西,以便在 x 分钟不活动后自动注销用户。我想以美国银行申请的方式这样做。 BofA应用程序的工作方式即使将应用程序放入后台,它仍然会跟踪时间。达到时间限制时,将弹出一条通知,说明您正在退出。
如果应用程序进入后台而没有暂停计时器,怎么办呢?
答案 0 :(得分:2)
我认为你可以做的最简单的事情就是用NSNotificationCenter
注册你的AppDelegate来监听来自所有(或者可能是特定的)发件人的所有事件。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resetTimer) name:nil object:nil];
您需要注意将nil
传递给name
和object
参数,因为您会收到大量通知(甚至有些通知不是来自应用程序,即内存警告)。如果您知道或拥有特定事件名称和/或对象的列表,我会在这些名称和/或对象上进行观察。
在resetTimer
方法中,您只需使前一个计时器无效并创建一个新的计时器,它将调用某个logout
方法并将iVar设置为当前日期/时间(即{{1 }})
以上步骤将在您的应用程序位于前台时处理它。
当应用程序背景化时,计时器将退出工作状态。但是,当应用返回到前台时,您可以计算timerStart = [NSDate now];
和[NSDate now]
iVar之间的差值。如果增量大于某个间隔,则调用timerStart
方法。如果没有,您只需致电logout
再次启动计时器。
修改强>
如果您希望后台应用提醒用户即将退出,您可以使用resetTimer
。您可以安排一个在应用程序进入后台时发出警报。当应用程序进入前台时,您可以取消该通知(并执行上面提到的步骤)。