Ios 应用程序在后台停留的时间

Ios 应用程序在后台停留的时间,ios,iphone,Ios,Iphone,我对我的应用程序有一个要求,即在一段时间(25分钟)后,它必须注销)。现在,如何计算应用程序在后台停留的时间 我正在尝试使用方法-applicationIDbecomeactive,使用时间戳并获取时间戳之间的差异,为此提供了默认代码。问题是,这种差异有点奇怪,我无法理解。 简单地说,我要得到差异,但我不能转换成所需的分/秒。我想知道这个差值是否等于25分钟(甚至是秒)。任何简单的代码片段?您可以在其中输入de-background: - (void)applicationDidEnterBac

我对我的应用程序有一个要求,即在一段时间(25分钟)后,它必须注销)。现在,如何计算应用程序在后台停留的时间

我正在尝试使用方法-
applicationIDbecomeactive
,使用时间戳并获取时间戳之间的差异,为此提供了默认代码。问题是,这种差异有点奇怪,我无法理解。
简单地说,我要得到差异,但我不能转换成所需的分/秒。我想知道这个差值是否等于25分钟(甚至是秒)。任何简单的代码片段?

您可以在其中输入de-background:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    self.backgroundedDate = [NSDate date];
}
然后,当您回到前台时,检查时差:

- (void)applicationWillEnterForeground:(UIApplication *)application {       
    if (self.backgroundedDate) {
        BOOL isTimedout =[self.backgroundedDate timeIntervalSinceNow] <= -(25 * 60);
        if (isTimedout) {
            [self.rootViewController presentLogin];
        }
    }
}
-(void)应用程序将进入前台:(UIApplication*)应用程序{
if(自背景日期){

BOOL isTimedout=[self.backgroundedDate timeIntervalSinceNow]您可以设置一个
NSDate
在其中输入de-background:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    self.backgroundedDate = [NSDate date];
}
然后,当您回到前台时,检查时差:

- (void)applicationWillEnterForeground:(UIApplication *)application {       
    if (self.backgroundedDate) {
        BOOL isTimedout =[self.backgroundedDate timeIntervalSinceNow] <= -(25 * 60);
        if (isTimedout) {
            [self.rootViewController presentLogin];
        }
    }
}
-(void)应用程序将进入前台:(UIApplication*)应用程序{
if(自背景日期){

BOOL isTimedout=[self.backgroundedDate timeIntervalSinceNow]您可以设置一个
NSDate
在其中输入de-background:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    self.backgroundedDate = [NSDate date];
}
然后,当您回到前台时,检查时差:

- (void)applicationWillEnterForeground:(UIApplication *)application {       
    if (self.backgroundedDate) {
        BOOL isTimedout =[self.backgroundedDate timeIntervalSinceNow] <= -(25 * 60);
        if (isTimedout) {
            [self.rootViewController presentLogin];
        }
    }
}
-(void)应用程序将进入前台:(UIApplication*)应用程序{
if(自背景日期){

BOOL isTimedout=[self.backgroundedDate timeIntervalSinceNow]您可以设置一个
NSDate
在其中输入de-background:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    self.backgroundedDate = [NSDate date];
}
然后,当您回到前台时,检查时差:

- (void)applicationWillEnterForeground:(UIApplication *)application {       
    if (self.backgroundedDate) {
        BOOL isTimedout =[self.backgroundedDate timeIntervalSinceNow] <= -(25 * 60);
        if (isTimedout) {
            [self.rootViewController presentLogin];
        }
    }
}
-(void)应用程序将进入前台:(UIApplication*)应用程序{
if(自背景日期){


BOOL isTimedout=[self.backgroundedDate timeintervalencesnow]发布你的代码,它会告诉你更多的故事。我这样做的方法是在服务器端设置一个计时器,使当前用户会话无效。这样,当应用程序打开并与服务器接触时,你就会看到会话是否已过期。@rckoenes:这是-applicationidresume I your appdele中给出的默认注释代码你也可以在任何随机项目中看到这一点(注释字符太少,无法粘贴到这里)。如何在特定时间内使用该代码段。发布您的代码,它将讲述比您的故事更多的内容。我这样做的方法是在服务器端设置一个计时器,使当前用户会话无效。这样,当应用程序打开并与服务器接触时,您将看到会话是否已过期。@rckoenes:这是默认设置您的appdelegate中的-ApplicationIDResume中给出的代码。您也可以在任何随机项目中看到这一点(注释字符太少,无法粘贴到此处)。如何在特定时间内使用该代码段。发布您的代码,它将讲述比您的故事更多的内容。我这样做的方法是在服务器端设置一个计时器,使当前用户会话无效。这样,当应用程序打开并与服务器接触时,您将看到会话是否已过期。@rckoenes:这是默认设置您的appdelegate中的-ApplicationIDResume中给出的代码。您也可以在任何随机项目中看到这一点(注释字符太少,无法粘贴到此处)。如何在特定时间内使用该代码段。发布您的代码,它将讲述比您的故事更多的内容。我这样做的方法是在服务器端设置一个计时器,使当前用户会话无效。这样,当应用程序打开并与服务器接触时,您将看到会话是否已过期。@rckoenes:这是默认设置您的appdelegate中的-applicationIDResume中给出的代码。您也可以在任何随机项目中看到这一点(注释字符太少,无法粘贴到此处)。如何在特定时间内使用该代码段。谢谢!!您的解决方案工作得很好。有没有办法在以前的\u date=[[NSDate date]timeIntervalSince1970]中实现这一点****当前日期为10分钟后计算的日期=[[NSDate date]时间间隔1970];NSInteger difference=current_date-previous_date;这将以纳秒为单位返回一些值。如何将其转换为秒或分钟
timeintervalncesince1970
返回一个以秒为单位的值,因此您希望将分钟除以60。您给定的代码片段当前工作正常,返回的时间以秒为单位,但返回的时间以秒为单位上述ave(也可在-ApplicationIDBecomeActive中获得)返回毫秒。即使两个日期的差在短时间内也会返回奇数值,即186、142等。小数分隔符后面的所有内容都是毫秒,所以只需将它从
NSTimeInterval
转换为
NSInteger
,就可以释放毫秒。这是非常基本的东西。Thanks!!你的解决方案很好。有没有办法在前一个日期=[[NSDate date]时间间隔1970];****10分钟后计算的日期当前日期=[[NSDate date]时间间隔1970];NSInteger difference=current_date-previous_date;这将以纳秒为单位返回一些值。如何将其转换为秒或分钟
timeintervalncesince1970
返回一个以秒为单位的值,因此您希望将分钟除以60。您给定的代码片段当前工作正常,返回的时间以秒为单位,但返回的时间以秒为单位上述ave(也可在-ApplicationIDBecomeActive中获得)返回毫秒。即使两个日期的差在短时间内返回奇数值,即186、142等。十进制分隔符后面的所有内容都是毫秒,因此只需将其从
NSTimeInterval
转换为
NSInteger
,就会丢失毫秒