РЕДАКТИРОВАТЬ: Может быть, есть много лучших решений для этого случая, но для моего случая, это работает отлично.Если у кого-то есть лучшее решение, пожалуйста, поделитесь им с нами.РЕДАКТИРОВАТЬ.
Я сделал это увеличение логики номера значка.В моем файле AppDelegate.m
я написал метод с именем arrangeBadgeNumbers
:
-(void)arrangeBadgeNumbers{
self.notificationsArray = [NSMutableArray arrayWithArray:[[UIApplication sharedApplication] scheduledLocalNotifications]];
NSLog(@"notifications array count: %d",self.notificationsArray.count);
NSMutableArray *fireDates = [[NSMutableArray alloc]init];
for (NSInteger i=0; i<self.notificationsArray.count; i++)
{
UILocalNotification *notif = [self.notificationsArray objectAtIndex:i];
NSDate *firedate = notif.fireDate;
[fireDates addObject:firedate];
}
NSArray *sortedFireDates= [fireDates sortedArrayUsingSelector:@selector(compare:)];
for (NSInteger i=0; i<self.notificationsArray.count; i++)
{
UILocalNotification *notif = [self.notificationsArray objectAtIndex:i];
notif.applicationIconBadgeNumber=[sortedFireDates indexOfObject:notif.fireDate]+1;
}
[[UIApplication sharedApplication] setScheduledLocalNotifications:self.notificationsArray];
[fireDates release];
}
Я вызываю этот метод для:
-(void)applicationWillTerminate:(UIApplication *)application;
-(void)applicationDidEnterBackground:(UIApplication *)application;
-(void)applicationWillResignActive:(UIApplication *)application;
В последнем методе я также делаю application.applicationIconBadgeNumber = 0
начать с 0 и потому, что в моем приложении, когда пользователь открывает приложение, это означает, что он видел уведомления.Поэтому в следующий раз, когда он закроет приложение, локальных уведомлений не будет.
Надеюсь, это сэкономит время.