接下来使用本地通知(local notification)实现催眠提醒功能。本地通知用于向用户提示一条消息——即使应用没有运行,用户也可以收到本地通知。
应用还可以通过后台服务器实现推送通知(push notification)。有关推送通知的技术细节请参考Apple的Local and Push Notification Programming Guide(本地通知和推送通知编程指南)。
实现本地通知非常简单,首先需要创建一个UILocalNotification对象并设置其显示内容和提醒时间,然后调用UIApplication单例对象的scheduleLocalNotification:方法注册该通知就可以了。
实现addReminder:方法,代码如下:
- (IBAction)addReminder:(id)sender
{
NSDate *date = self.datePicker.date;
NSLog(@"Setting a reminder for %@", date);
UILocalNotification *note = [[UILocalNotification alloc] init];
note.alertBody = @"Hypnotize me!";
note.fireDate = date;
[[UIApplication sharedApplication] scheduleLocalNotification:note];
}
构建并运行应用,首先选中Reminder标签项;然后选择一个距离现在较近的提醒时间,以便更快收到催眠提醒;最后点击Remind Me按钮。为了看到本地通知,必须关闭HypnoNerd应用,请点击设备底部的Home键或者选择模拟器菜单Hardware→Home(硬件→首页)。当之前选择的提醒时间到了之后,屏幕顶部会出现一个通知栏(见图6-18),点击通知栏就可以启动HypnoNerd应用。
图6-18 本地通知
可能读者已经注意到了一个问题:用户可以选择一个过去的时间。之后的章节会设置datePicker,只允许用户选择未来的时间。