在我的应用程序中,每当用户将应用程序闲置超过15分钟时,我的应用程序就会将用户从应用程序中注销。这对我来说非常合适。 再次当用户尝试登录时,他能够做到这一点。
但问题是,如果我登录到应用程序&我让我的应用空闲了15分钟,我收到一条错误消息,我的应用程序让我退出。
我仍然在屏幕上填充了错误消息,我还没有关闭该消息,并且我再次让我的应用闲置了15分钟。
现在,当我关闭错误消息并再次尝试登录应用时,它不允许我。
它总是给出一条消息"错误 - 一般错误消息"。
以下是我的代码: 我创建了一个UIApplication类
@interface PSATimerUIApplication : UIApplication
{
NSTimer *_idleTimer;
}
-(void)resetIdleTimer;
@implementation PSATimerUIApplication
- (void)sendEvent:(UIEvent *)event
{
[super sendEvent:event];
// Fire up the timer upon first event
if(!_idleTimer)
{
[self resetIdleTimer];
}
// Check to see if there was a touch event
NSSet *allTouches = [event allTouches];
if ([allTouches count] > 0){
UITouchPhase phase = ((UITouch *)[allTouches anyObject]).phase;
if (phase == UITouchPhaseBegan){
[self resetIdleTimer];
}
}
}
-(void)resetIdleTimer{
if (_idleTimer) {
[_idleTimer invalidate];
}
// Schedule a timer to fire in kApplicationTimeoutInMinutes
int timeout = PSAApplicationTimeoutInMinutes * 60;
_idleTimer = [NSTimer scheduledTimerWithTimeInterval:timeout target:self selector:@selector(idleTimerExceeded) userInfo:nil repeats:NO];
}
-(void)idleTimerExceeded {
/*Post a notification so anyone who subscribes to it can be notified when
*the application times out */
[[NSNotificationCenter defaultCenter]postNotificationName:PSAApplicationDidTimeoutNotification object:nil];
}
还更新了主要功能:
int main(int argc, char * argv[])
{
@autoreleasepool
{
return UIApplicationMain(argc, argv, NSStringFromClass([PSATimerUIApplication class]), NSStringFromClass([PSAAppDelegate class]));
}
}
任何人都可以帮我解决这个问题吗? 我正在使用AFTNetworking1.0进行所有的http调用。
答案 0 :(得分:0)
15分钟后如果应用程序空闲,应用程序将自动空闲。释放所有临时内存数据。因此,您可以防止15分钟后应用程序闲置(从设置中)或在15分钟之前执行。
答案 1 :(得分:0)
最好的方法是创建UserDefaults变量并将其用作标志。 当用户登录并处于活动状态时,将其设置为true。 如果用户注销或超时,请将变量设置为false。 并在该类的viewDidAppear和viewDidLoad中检查该标志是否为false。如果是,则弹出登录视图控制器。否则继续。