2013-06-18 5 views
0

Я делаю приложение, которое использует локальные уведомления. Я пытаюсь это сделать, и я использую два экземпляра. Когда я запускаю приложение kill, появляется только одно уведомление. Это код в приложение delegate.mОшибка двух локальных уведомлений

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 


//1 
NSCalendar *gregcalendar2 = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; 

NSDateComponents *datecomponent2 = [gregcalendar2 components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit fromDate:[NSDate date]]; 

[datecomponent2 setYear:2013]; 
[datecomponent2 setMonth:6]; 
[datecomponent2 setDay:18]; 
[datecomponent2 setHour:16]; 
[datecomponent2 setMinute:58]; 

UIDatePicker *dd2 = [[UIDatePicker alloc]init]; 
[dd2 setDate:[gregcalendar2 dateFromComponents:datecomponent2]]; 


UILocalNotification *notification2 = [[UILocalNotification alloc]init]; 
[notification2 setAlertBody:@"two"]; 
[notification2 setFireDate:dd2.date]; 
[notification2 setTimeZone:[NSTimeZone defaultTimeZone]]; 
[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification2]]; 


//2 

NSCalendar *gregcalendar1 = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; 

NSDateComponents *datecomponent1 = [gregcalendar1 components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit fromDate:[NSDate date]]; 

[datecomponent1 setYear:2013]; 
[datecomponent1 setMonth:6]; 
[datecomponent1 setDay:18]; 
[datecomponent1 setHour:16]; 
[datecomponent1 setMinute:59]; 

UIDatePicker *dd1 = [[UIDatePicker alloc]init]; 
[dd1 setDate:[gregcalendar1 dateFromComponents:datecomponent1]]; 


UILocalNotification *notification1 = [[UILocalNotification alloc]init]; 
[notification1 setAlertBody:@"one"]; 
[notification1 setFireDate:dd1.date]; 
[notification1 setTimeZone:[NSTimeZone defaultTimeZone]]; 
[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification1]]; 

}

ответ

2

Во-первых, вы делаете:

[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification2]]; 

и затем

[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification1]]; 

, что означает: заменить все ранее запланированное локальные уведомления (в этом случае уведомление2) с массивом, содержащим notification1.

Вместо этого, вы можете использовать:

[application scheduleLocalNotification:notification1]; 
[application scheduleLocalNotification:notification2]; 

или:

[application setScheduledLocalNotifications:@[notification1, notification2]]; 
Смежные вопросы