闹钟所实现的基本功能:定时提醒
//定义声音
- CFBundleRef mainBundle;
- mainBundle = CFBundleGetMainBundle ();
- // Get the URL to the sound file to play
- soundFileURLRef = CFBundleCopyResourceURL (
- mainBundle,
- CFSTR ("tap"),
- CFSTR ("aif"),
- NULL
- );
- //将nsstring转为cfstring
- // Create a system sound object representing the sound file
- AudioServicesCreateSystemSoundID
- (
- soundFileURLRef,
- &soundFileObject
- );//声音的绑定(类似数据库时用的数据库指针)
利用之前介绍的uidatepicker选取要提醒的时间
- //计算多少秒后闹钟响应时间
- int hm=(hs*3600)+(ms*60)-sec;
- //建立后台消息对象
- UILocalNotification *notification=[[UILocalNotification alloc] init];
- if (notification!=nil)
- {
- notification.repeatInterval=NSDayCalendarUnit;
- NSDate *now1=[NSDate new];
- notification.fireDate=[now1 dateByAddingTimeInterval:hm];//距现在多久后触发代理方法
- notification.timeZone=[NSTimeZone defaultTimeZone];
- notification.soundName = @"tap.aif";
- notification.alertBody = [NSString stringWithFormat:NSLocalizedString(@"你设置的时间是:%i : %i .",nil),htime1 ,mtime1];
- [[UIApplication sharedApplication] scheduleLocalNotification:notification];
- [now1 release];
- }
点击确定时触发此方法
- -(void)notfacation{
- //获取当前时间
- sure=YES;
- NSDate* now = [NSDate date];
- NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
- NSDateComponents *comps = [[NSDateComponents alloc] init];
- NSInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit |
- NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
- comps = [calendar components:unitFlags fromDate:now];
- hour = [comps hour];
- min = [comps minute];
- sec = [comps second];
- htime1=[textField.text intValue];
- mtime1=[textField1.text intValue];
- hs=htime1-hour;
- ms=mtime1-min;
- //设置弹出框提醒用户
- UIAlertView *at=[[UIAlertView alloc] initWithTitle:@"!"
- message:[NSString stringWithFormat:@"你设置的时间: %i:%i ",htime1,mtime1]
- delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:@"关闭",nil];
- [at setDelegate:self];
- [at show];
- [at release];
- }
所设定的时间到了会触发此代理
- //到时间时触发的代理
- - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
- {
- NSLog(@"123123123131231231++++++++++++");
- AudioServicesPlaySystemSound (self.soundFileObject);
- sure=NO;
- UIApplicationState state = application.applicationState;
- if (state == UIApplicationStateActive)
- {
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"时间提醒"
- message:notification.alertBody
- delegate:self
- cancelButtonTitle:@"确定"
- otherButtonTitles:nil];
- [alert show];
- [alert release];
- }
- }