Как увеличить / обновить значок no of localNotification - PullRequest
1 голос
/ 08 октября 2010

Я сделал приложение для напоминания о дне рождения, используя localNotification.

Читает контакты из адресной книги и узнает список дней рождений того дня (сегодня).

Я повторяю это приложение каждый день, используя localNotification.repeatinterval (NSDayCalenderUnit).

У меня все нормально работает.

Когда я получаю уведомление в первый раз, значок № 1 равен 1 (нет проблем), но если я закрою уведомление и разрешу приложению работать в фоновом режиме, а на следующий день я получу еще одно уведомление (тогда это значок № должно быть 2).

Поэтому, пожалуйста, помогите мне, указав, как я могу увеличить этот значок №. считать, когда я закрываю уведомление, когда мое приложение работает в фоновом режиме.

Я не знаю, когда приложение работает в фоновом режиме через localNotification.repeatinterval, какой метод запускается.

Буду признателен за любую помощь.

Ответы [ 2 ]

4 голосов
/ 17 января 2011

РЕДАКТИРОВАТЬ: Может быть, есть много лучших решений для этого случая, но для моего случая, это работает отлично.Если у кого-то есть лучшее решение, пожалуйста, поделитесь им с нами.РЕДАКТИРОВАТЬ.

Я сделал это увеличение логики номера значка.В моем файле 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 и потому, что в моем приложении, когда пользователь открывает приложение, это означает, что он видел уведомления.Поэтому в следующий раз, когда он закроет приложение, локальных уведомлений не будет.

Надеюсь, это сэкономит время.

0 голосов
/ 02 ноября 2010

В UILocalNatification нет встроенной функциональности для автоматического увеличения номера значка. Вы должны предоставить номер значка для каждого отдельного уведомления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...