我的通知代码有什么问题?

时间:2013-01-09 22:39:13

标签: ios objective-c uilocalnotification repeatingalarm

注意:下面有更新。

我在上一个问题中已经询问过为每小时重复间隔指定一分钟。 但是,我有两个答案要求我尝试日期组件,我做了。这是:

[[UIApplication sharedApplication] cancelAllLocalNotifications];
NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar] ;
NSDateComponents *componentsForReferenceDate = [[NSDateComponents alloc] init];
[componentsForReferenceDate setHour:hour];
[componentsForReferenceDate setMinute:0];
[componentsForReferenceDate setSecond:0];

 NSDate *fireDateOfNotification = [calendar dateFromComponents: componentsForReferenceDate];
 // Create the notification
 UILocalNotification *notification = [[UILocalNotification alloc] init] ;

 notification.fireDate = fireDateOfNotification;
 notification.timeZone = [NSTimeZone localTimeZone] ;
 notification.alertBody = [NSString stringWithFormat: @"You are missed!"] ;
 notification.alertAction = @"View";
 notification.userInfo= [NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"Some information"] forKey:@"information"];
 notification.repeatInterval= NSHourCalendarUnit ;
 notification.soundName = @"Appnotifisound.wav";
 notification.applicationIconBadgeNumber = 1;
 [[UIApplication sharedApplication] scheduleLocalNotification:notification] ;

代码在我看来是正确的,它应该工作,因为我被告知它应该在每小时开始时发出通知。但是,它没有!代码是完整的,我已经设置了属性并合成它甚至NSCalendar就在那里。它构建和运行完美无缺,然而,它永远不会在我的模拟器上每小时发出一次通知!?我只是无法得到似乎错误的东西。如果您需要更多信息或复制代码的其他部分以帮助我找到遗漏的内容,请告诉我。谢谢。

更新:如果可能是问题,我就按小时编码。

NSCalendar *calendar1 = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar1 components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:[NSDate date]];
hour = [components hour];
min =[components minute];
sec =[components second];
NSLog(@"hour is %i",hour);

NSLog(@"min is %i",min);

NSLog(@"sec is %i",sec);
 if (hour < 24) {
     hour=hour+1;
     } else {
         hour=0;

2 个答案:

答案 0 :(得分:3)

让我难过的东西:当应用程序在前台时,您将看不到通知。您需要点击模拟器上的主页按钮将应用程序置于后台,否则,在应用程序处于活动状态时查看内容,在应用程序中实现应用程序委托协议方法:- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification并使该方法显示某些内容

答案 1 :(得分:0)

当我复制此代码时它适用于我,除了我没有设置你的声音,你没有显示你如何设置'小时'所以我硬编码。这是输出。

  

2013-01-09 17:57:17.968 TestStackOverflow [3322:11303] fireDate =   0001-01-01 06:17:32 +0000 2013-01-09 17:57:17.993   TestStackOverflow [3322:11303] +++ scheduledLocalNotifications(       “{起火日期= 1月1日星期一,格林威治标准时间-05:1:00:00:17:32,时区=美国/多伦多   (EST)偏移-18000,重复间隔= NSHourCalendarUnit,重复   count = UILocalNotificationInfiniteRepeatCount,下一个开火日期=   2013年1月9日,星期三,东部标准时间下午6:17:32,用户   info = {\ n information = \“某些信息\”; \ n}}“