应用程序中的自动注销计时器?
Auto Signout timer in app?
我要做的就是这个;我将有一个计时器,它会滴答作响,当 30 分钟结束时,我会自动注销用户。但如果与应用程序有任何交互,我会将计时器重置为 30 分钟。我知道该怎么做,但我确信有更好的方法来完成它。
我要做的是创建一个单例 class,它包含一个计时器并在计时器启动时发布通知。所以我在想的是,每当用户按下按钮、转到下一个屏幕等时,我都必须重置计时器。
我的问题是是否可以通过一段代码响应应用程序中的任何触摸?就像不知何故有一个 superclass 我可以添加它并且无论发生什么样的交互它总是会重置计时器?或者我是否需要将代码添加到用户将与应用程序交互的所有位置?
您可以试试这个,子类 UIApplication
并在实现中添加以下代码
@implementation MyApplication
- (instancetype)init {
self = [super init];
if (self) {
[self reset];
}
return self;
}
- (void)reset {
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(logout) object:nil];
[self performSelector:@selector(logout) withObject:nil afterDelay:30*60];
}
- (void)sendEvent:(UIEvent *)event {
[super sendEvent:event];
[self reset];
NSLog(@"event detected");
}
- (void)logout {
NSLog(@"logout now");
}
@end
然后在main.m
中改变实现方式
return UIApplicationMain(argc, argv, NSStringFromClass([MyApplication class]), NSStringFromClass([AppDelegate class]));
这里发生的事情是,- (void)sendEvent:(UIEvent *)event
方法将在每个用户 activity 之后被调用,然后我们在 30 分钟后注册一个执行选择器请求。一旦用户在 30 分钟内触摸屏幕,取消之前的请求并注册新的请求。
我要做的就是这个;我将有一个计时器,它会滴答作响,当 30 分钟结束时,我会自动注销用户。但如果与应用程序有任何交互,我会将计时器重置为 30 分钟。我知道该怎么做,但我确信有更好的方法来完成它。
我要做的是创建一个单例 class,它包含一个计时器并在计时器启动时发布通知。所以我在想的是,每当用户按下按钮、转到下一个屏幕等时,我都必须重置计时器。
我的问题是是否可以通过一段代码响应应用程序中的任何触摸?就像不知何故有一个 superclass 我可以添加它并且无论发生什么样的交互它总是会重置计时器?或者我是否需要将代码添加到用户将与应用程序交互的所有位置?
您可以试试这个,子类 UIApplication
并在实现中添加以下代码
@implementation MyApplication
- (instancetype)init {
self = [super init];
if (self) {
[self reset];
}
return self;
}
- (void)reset {
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(logout) object:nil];
[self performSelector:@selector(logout) withObject:nil afterDelay:30*60];
}
- (void)sendEvent:(UIEvent *)event {
[super sendEvent:event];
[self reset];
NSLog(@"event detected");
}
- (void)logout {
NSLog(@"logout now");
}
@end
然后在main.m
中改变实现方式
return UIApplicationMain(argc, argv, NSStringFromClass([MyApplication class]), NSStringFromClass([AppDelegate class]));
这里发生的事情是,- (void)sendEvent:(UIEvent *)event
方法将在每个用户 activity 之后被调用,然后我们在 30 分钟后注册一个执行选择器请求。一旦用户在 30 分钟内触摸屏幕,取消之前的请求并注册新的请求。