ios - 当应用程序处于后台时,如何检测特定时间何时过去?

标签 ios objective-c uilocalnotification

我有一个简单的提醒,当我在日期选择器中设置的时间现在到了时,我使用 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/

相关文章:

javascript - 手机自动播放直播

ios - 是否可以仅从 UDID 获取其他设备信息?

ios - 如何更改使用不同类的界面生成器设置的 UI 元素?

objective-c - 从 Xcode 3 导入项目时,Xcode 4 代码丢失语法着色

ios - 在 UITableView 搜索点击上显示新 Controller

ios - 当应用程序在前台使用 ios 8 时,调度程序 UILocalNotification 不工作

ios - 如何居中对齐 iphone 的最大视口(viewport)缩放

ios - 从 ios 中的另一个 View 禁用 UIview 元素

ios - 自定义警报通知 IOS 保持应用程序运行

ios - 在 iOS 中单击本地通知时不打开应用程序