簡體   English   中英

檢查進入前台時iPhone App在后台的時間長度

[英]Checking how long iPhone App has been in background when coming into foreground

我有一個iPhone應用程序,允許用戶登錄和與Web服務交互。 我希望用戶能夠在一段時間不活動后自動注銷...更具體地說,如果應用程序已經在后台工作超過一段時間(例如1小時)。

理想情況下,我想在App Delegate方法applicationWillEnterForeground中運行一個檢查,檢查應用程序在后台的時間長度,然后是否超過允許的時間,將它們帶到登錄屏幕。

我將如何在上述方法中運行此檢查? 我會很感激一些示例代碼。

如果這不是達到我要求的最佳方式,那么建議也歡迎!

提前謝謝了

安迪

你可以用這個:

- (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
        }
    }
}

當應用程序進入后台或退出時,將時間和日期寫入NSUserDefaults。 然后從applicationWillEnterForeground中的NSUserDefaults讀取該時間和日期並進行比較。 如果超過1小時(或者您設置的超時時間),則顯示登錄屏幕。

節省應用程序進入NSUserDefaults后台的時間。 然后在重新進入前景時讀取它。

在applicationWillEnterForeground中,如果時差超過1小時,您將設置標志或發布通知。 即你可以在你的app委托中有一個記錄用戶的方法,或者你可以在viewWillAppear中檢查一個標志,如果需要,可以將用戶記錄下來。

首先在方法applicationdidFinishLaunching中設置計時器:

現在檢查方法applicationDidBecomeActive中的時間:每次用戶再次啟動應用程序時都會調用此方法。

如果時間大於ex(1小時),則重置計時器並注銷用戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM