当应用程序处于后台时,如何检测何时通过?

时间:2015-03-28 01:23:57

标签: ios objective-c uilocalnotification

我有一个简单的提醒,当我现在在日期选择器中设置的时间时,我使用UILocalNotification来提醒,并且我希望在时间过去后更改视图控制器的某个标签...让我们说用户选择了一个日期,在提醒他提醒他之后,当他回到应用程序看到之前有一些标签时,我知道该怎么办?当应用程序处于bg状态时,我该如何检测?

我的代表中有这个方法:

-(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锁定时收到的通知返回应用程序时,才会发生这种情况。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果通知在后台启动时触发并且用户没有从通知中启动应用程序,则没有任何钩子被点击。

在这种情况下,使用NSTimer管理标签可能是有意义的,可以在安排通知的同时进行设置。当用户为应用程序提供背景时,您将使该计时器无效。

当应用程序返回到前台时,您将根据通知的目标时间检查当前时间,并在该时间点击时更新您的标签。如果该时间是将来,您可以根据目标时间设置新的NSTimer。

答案 1 :(得分:0)

输入背景时,请将某些信息保存到用户默认值。 (与您希望显示消息的未来日期一样)

在启动时,以及从后台返回时,从用户默认值加载该数据并检查是否有时间安装该消息。如果是,请显示它。