检查进入前台时iPhone App在后台的时间长度

And*_*ndy 6 iphone objective-c ios

我有一个iPhone应用程序,允许用户登录和与Web服务交互.我希望用户能够在一段时间不活动后自动注销...更具体地说,如果应用程序已经在后台工作超过一段时间(例如1小时).

理想情况下,我想在App Delegate方法applicationWillEnterForeground中运行一个检查,检查应用程序在后台的时间长度,然后是否超过允许的时间,将它们带到登录屏幕.

我将如何在上述方法中运行此检查?我会很感激一些示例代码.

如果这不是达到我要求的最佳方式,那么建议也欢迎!

提前谢谢了

安迪

Rok*_*arc 12

你可以用这个:

- (void)applicationWillResignActive:(UIApplication *)application
{    
    NSDate *thisMagicMoment = [NSDate date];
    [[NSUserDefaults standardUserDefaults] setObject:thisMagicMoment forKey:@"lastMagicMoment"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    NSDate *thisMagicMoment = [NSDate date];
    NSDate *lastMagicMoment =  (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"lastMagicMoment"];

    if (lastMagicMoment==nil)
    {
        NSLog (@"First launch!");
    }
    else
    {
        NSTimeInterval timeOfNoMagic = [thisMagicMoment timeIntervalSinceDate:lastMagicMoment]/3600.0;
        NSLog (@"Application was in background for %.1f hours", timeOfNoMagic);

        //do your stuff - treat NSTimeInterval as double

        if (timeOfNoMagic > 1.0)
        {
            //logout
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Nick:从教育的角度来看,我同意70%.我认为编码必须从学习文档和查看(有时是复制粘贴)现成代码中学习.仅仅从Apple的文档中学习将是一个痛苦...但是:SO不仅仅用于学习 - 许多人将其用作公共存储库,用于解决非关键问题(提高生产力)的短代码片段.那就是说:我一小时前给你和你的答案给了+1,因为他们很有教育意义.我会(如果可以的话)给我的+1也是因为对于任何有同样"问题"的人来说它可以节省时间.:-) (3认同)
  • 好点,制作精良.在这里 - 有这个+1 :-) (2认同)