Sie können dies nicht mit einem normalen NSTimer
tun, da es keine Hintergrundunterstützung gibt. Es ist jedoch sehr leicht erreichbar mit einer anderen Methode.
In Ihrem AppDelegate haben Sie zwei Methoden. applicationWillResignActive
und applicationDidBecomeActive
. Bei der resign-Methode müssen Sie einfach die aktuelle NSDate
in der NSUserDefaults
beibehalten und in der aktiven Methode abrufen und mit der aktuellen NSDate
vergleichen, um die Zeit zu ermitteln, für die die App inaktiv war.
Code-Beispiele:
func applicationWillResignActive(application: UIApplication) {
let date = NSDate()
NSUserDefaults.standardUserDefaults().setObject(date, forKey: "DateTimer")
}
func applicationDidBecomeActive(application: UIApplication) {
if let persistedDate = NSUserDefaults.standardUserDefaults().objectForKey("DateTimer") as? NSDate {
let difference = NSCalendar.currentCalendar().components([.Second], fromDate: persistedDate, toDate: NSDate(), options: [])
let differenceSeconds = difference.second
}
}