1

我想创建一个计时器或类似的东西来在x分钟不活动后自动注销用户。我想以与美国银行应用程序相同的方式进行操作。BofA 应用程序执行此操作的方式是,即使将应用程序置于后台,它仍会跟踪时间。当达到时间限制时,将弹出一条通知,说明您正在注销。

当应用程序进入后台时,如何在不暂停计时器的情况下做到这一点?

4

1 回答 1

2

我认为您可以做的最简单的事情就是注册您的 AppDelegateNSNotificationCenter以侦听来自所有(或特定)发件人的所有事件。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resetTimer) name:nil object:nil];

您需要注意传递nilnameandobject参数,因为您会收到大量通知(甚至有些不是来自应用程序,即内存警告)。如果您知道或拥有特定事件名称和/或对象的列表,我会改为观察这些。

在您的resetTimer方法中,您将简单地使前一个计时器无效并创建一个新的计时器,该计时器将调用某个logout方法并将 iVar 设置为当前日期/时间(即 timerStart = [NSDate now];

上述步骤将在前台处理您的应用程序。

当应用程序在后台运行时,计时器将停止工作。但是,当应用程序返回前台时,您可以计算[NSDate now]与您的timerStartiVar 之间的增量。如果增量大于某个间隔,则调用您的logout方法。如果没有,你可以打电话resetTimer重新开始你的计时器。

编辑

如果您希望后台应用程序提醒用户即将注销,您可以使用UILocalNotification. 您可以安排一个在应用程序进入后台时发出警报。当应用程序进入前台时,您可以取消该通知(并执行我上面提到的步骤)。

于 2012-04-25T03:06:03.180 回答