【问题标题】:iPhone: How to get notification center to detect date?iPhone:如何让通知中心检测日期?
【发布时间】:2012-01-18 19:31:56
【问题描述】:

我刚刚编写了一个应用程序,该应用程序很大程度上取决于在截止日期临近时通知您的能力。它允许用户在 UITextField 中输入特定日期(不使用日期选择器)。我宁愿不经历设置推送通知的麻烦,iOS 5 的通知中心会很好用。但是,我不确定如何让通知中心检测输入的日期。

我将此代码放在我的视图控制器中的 didFinishLaunchingWithOptions: 方法中:

UILocalNotification *dateNotif = [[UILocalNotification alloc] init];

            localNotif.fireDate=[NSDate date];
            localNotif.timeZone = [NSTimeZone defaultTimeZone];


            localNotif.alertBody = @"Event starts in 20 minutes!";

            localNotif.alertAction = @"Show me";

            localNotif.soundName = UILocalNotificationDefaultSoundName;
            localNotif.applicationIconBadgeNumber = 0;
            [[UIApplication sharedApplication]presentLocalNotificationNow:dateNotif];
            [localNotif release];

但我完全不知道从这里去哪里,我还是很陌生。任何帮助都会很棒,谢谢!

【问题讨论】:

  • 如果您坚决反对使用推送(远程)通知,为什么还要注册远程通知?
  • 哦,哇,好点,这根本没有意义。我用新代码更新了 OP。谢谢马克!

标签: iphone xcode


【解决方案1】:

您需要创建一个UILocalNotification,适当地设置fireDate(并设置您希望用户看到的任何文本),然后将其传递给UIApplicationscheduleLocalNotification:

除此之外,您需要处理的唯一事情是,如果您的应用在通知触发时已经在运行,那么通知中心将不会做任何事情,并且您的应用委托将获得didReceiveLocalNotification:。如果应用程序没有运行,但用户选择从警报中启动它,那么您将收到本地通知返回到您的didFinishLaunchingWithOptions:,允许您执行相关操作。

【讨论】:

  • 太棒了,非常感谢汤米!我用新代码更新了 OP,但我仍然不确定如何获取通知以检测日期何时到来。
  • 将 fireDate 设置为您希望触发通知的日期,而不是当前日期。因此,请将其设置为用户选择的任何日期之前的 20 分钟(例如,在用户输入的日期使用 dateByAddingTimeInterval:-20*60)。然后操作系统会为您完成剩下的工作。
  • 非常感谢,帮了大忙!
  • 嘿,Tommy 我还有一个问题,我的代码现在是 localNotif.fireDate=[dateByAddingTimeInterval:-20*60]; 让它在 15 小时前触发的正确数字是多少?会是 -900*60 吗?这应该放在我的应用程序委托还是特定的视图视图控制器中?再次感谢
  • 是的——时间间隔是以秒为单位的,所以 -900*60 会提前 15 小时。 900*60 会晚 15 小时,-23 会早 23 秒,等等。程序结构由你决定,但我可能会把它放在视图控制器中,因为它是从特定视图到模型的通信模型-视图-控制器术语——尽管在这种情况下模型的一部分是由操作系统提供的。
猜你喜欢
  • 2011-12-08
  • 2016-01-11
  • 2017-08-30
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
  • 2013-02-25
相关资源
最近更新 更多