Уведомление не работает

#ios #objective-c

#iOS #objective-c

Вопрос:

 NSCalendar *lbCalendar = [[NSCalendar alloc]init];
NSDateComponents *dateComponent = [lbCalendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit fromDate:[NSDate date]];

[dateComponent setYear:2014];
[dateComponent setMonth:6];
[dateComponent setDay:15];
[dateComponent setHour:22];
[dateComponent setMinute:29];

UIDatePicker *dp = [[UIDatePicker alloc]init];
[dp setDate:[lbCalendar dateFromComponents:dateComponent]];

UILocalNotification *notification = [[UILocalNotification alloc]init];
[notification setAlertBody:@"Hello Notification"];
[notification setFireDate:dp.date];
[notification setTimeZone:[NSTimeZone defaultTimeZone]];
[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification]];
  

Это мой код в appdelegate.m для отображения локального уведомления, но он не работает, и код правильный, без ошибок, и приложение правильно загружается, но уведомления не отображаются.

Я использую Xcode 5.1 с SDK 7.0

Комментарии:

1. Вы уверены, что это не называется? Реализовали ли вы - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification это ?

2. нет, я этого не реализовывал

3. Я реализовал его сейчас, но все равно не работал.

4. Да, это еще не решение проблемы, но если вы поместите туда NSLog или установите точку останова, это поможет вам устранить проблему.

5. попробуйте просто протестировать его с помощью NSDate, чтобы получить 5 секунд с этого момента и посмотреть, работает ли это. Если это так, то ваша проблема связана с кодом времени даты. Попробуйте распечатать свою дату, чтобы узнать, когда / где она находится, и NSLog (или более умный журнал отладки, если вы знаете, как его создать) все ваши переменные. Разделяй и властвуй, убедитесь, что каждая часть работает. Защитный стиль хорош для такого рода вещей

Ответ №1:

Попробуйте использовать

 NSCalendar *lbCalendar = [NSCalendar currentCalendar];
  

вместо

 NSCalendar *lbCalendar = [[NSCalendar alloc]init];