If you're developing in Swift and want to update your app's interface when it's reopened, put the following piece of code in the App Delegate:
var appLastUsedTime = CFAbsoluteTimeGetCurrent()
func applicationWillEnterForeground(application: UIApplication) { let timeSinceLastUsage = CFAbsoluteTimeGetCurrent() - self.appLastUsedTime log.verbose("App last used \(timeSinceLastUsage) seconds ago") //If it's been at least a day since the user accessed the app, send out a notification if timeSinceLastUsage > (24 * 60 * 60) { log.verbose("Posting notification \(MYFApplicationDidBecomeActiveAfterTimeoutNotification)") NSNotificationCenter.defaultCenter().postNotificationName(MYFApplicationDidBecomeActiveAfterTimeoutNotification, object: nil) self.appLastUsedTime = CFAbsoluteTimeGetCurrent() } }
Above the App Delegate, add the following global:
let ApplicationDidBecomeActiveAfterTimeoutNotification = "ApplicationDidBecomeActiveAfterTimeoutNotification"
In the view controller, add the following code in viewWillAppear():
NSNotificationCenter.defaultCenter().addObserver(self, selector: "updateInterface", name: ApplicationDidBecomeActiveAfterTimeoutNotification, object: nil)
And the following code in viewDidDisappear()
NSNotificationCenter.defaultCenter().removeObserver(self, name: ApplicationDidBecomeActiveAfterTimeoutNotification, object: nil)
Note that this notification doesn't trigger when activating the app for the first time. If you need that, add the following code to the view controller in question, in its viewDidAppear() function:
if !self. didInitializeAtStartup { self.updateInterface() didInitializeAtStartup = true }
And the following class member variable:
private var didInitializeAtStartup = false