根据用户活动退出

pa1*_*a12 3 iphone ios

我一直在寻找这个答案,但我无法找到解决方案.任何人都可以告诉我,由于用户与应用程序进行任何交互,我们如何计算后台的时间.在少数网站中如果您暂时不与网页交互,您将被注销.我正在寻找这个功能.

我真的很感激你的时间.谢谢

dan*_*anh 6

我认为你可以通过UIApplication自定义子类捕获事件.您可以在那里重新启动空闲计时器而不会破坏所有代码.这是怎么做的:

创建自己的UIApplication子类:

@interface MyUIApplication : UIApplication {
  NSTimer *idleTimer;
}
@property(nonatomic,retain) NSTimer *idleTimer;
Run Code Online (Sandbox Code Playgroud)

在你的主()

int retVal = UIApplicationMain(argc, argv, @"MyUIApplication", nil);
Run Code Online (Sandbox Code Playgroud)

在您的应用程序subclass.m中,重写sendEvent:和sendAction:.见苹果文档在这里:

- (void)sendEvent:(UIEvent *)event {
  [super sendEvent:event];
  [self. idleTimer invalidate];
  self. idleTimer = [NSTimer scheduledTimerWithTimeInterval:kIDLE_TIME target:self selector:@selector(logout:) userInfo:nil repeats:NO];}
Run Code Online (Sandbox Code Playgroud)

......发送动作相同.您也可以将退出逻辑放在此类中:

- (void)logout:(NSTimer *)timer {
  // do logout
}
Run Code Online (Sandbox Code Playgroud)

当应用程序辞职时,您仍应在应用程序委托中注销(并使计时器无效):

- (void)applicationWillResignActive:(UIApplication *)application {
  [application logout:nil];
}
Run Code Online (Sandbox Code Playgroud)