我有一个简单的提醒,当我在日期选择器中设置的时间现在到了时,我使用 UILocalNotification 来提醒,我想在时间过去后更改 View Controller 的某个标签...假设一个用户选择了一个日期,在提醒提醒他一些事情之后,我希望他回到应用程序时看到一些以前不存在的标签,当应用程序处于背景时,我如何检测时间过去了?
我的委托(delegate)中有这个方法:
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"bammm! its time to get sh#@ done." message:@"" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
}
但这只会在用户通过点击弹出窗口或滑动 iPhone 锁定时收到的通知返回应用程序时发生。
谢谢!
最佳答案
如果通知在后台触发并且用户未通过通知启动应用程序,则不会触发任何 Hook 。
在这种情况下,使用 NSTimer 管理标签可能是有意义的,在您安排通知的同时进行设置。当用户将应用设置为后台时,您将使该计时器失效。
当应用程序返回前台时,您将根据通知的目标时间检查当前时间,并在到达该时间时更新您的标签。如果该时间在未来,您将根据目标时间设置一个新的 NSTimer。
关于ios - 当应用程序处于后台时,如何检测特定时间何时过去?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29312603/