2013-10-07 3 views
2

Я занимаюсь разработкой IOS приложение как с Push-уведомления и местного уведомления, я знаю, как удалить 1 и все уведомления от центра,Как отменить уведомление от центра уведомлений, который толчок уведомление

использованием

[[UIApplication sharedApplication]cancelAllLocalNotifications]; 

Но моя проблема, если я запланировал некоторые местные уведомления,

и толчок уведомление прибыл так в didReceiveRemoteNotification Я пишу

[[UIApplication sharedApplication]cancelAllLocalNotifications]; для четкого центра уведомлений

но очищаются вся моя LocalNotification также ...

EDIT если есть общие 3 notifiction в Северной Каролине, т.е. 1, пришедшая из местного оповещения и два из push (от сервера) в этом случае, как я могу справиться с этим ,? Я нажимаю на первое уведомление (приходит от сервера) в NC. в этом случае, что делать, значок моего приложения должен быть равен 2.

то что мне делать?

+0

Может быть ниже ссылка то, что вы ищете: http://stackoverflow.com/a/10906766/2098401 – Geekoder

+0

@ChinabS .: Я знаю, что, но моя проблема defferent. проверьте мой вопрос. –

ответ

3

cancelAllLocalNotifications будет отменять только локальные уведомления, даже на имя! Не точные уведомления, которые вы можете прочитать в документации:

Отменяет доставку всех запланированных местных уведомлений.

Поскольку уведомления о push-адресах являются серверными, в приложении отменяется уведомление. Чтобы удалить push-уведомление из центра уведомлений, просто установите applicationBadegNumber в 0.

+0

Thnaks для ответа. поэтому, если в NC есть общее 3 сообщения, то 1 приходит из локального уведомления и два из push (от сервера) в этом случае, как я могу его обработать ,? Я нажимаю на первое уведомление (приходит от сервера) в NC. в этом случае, что нужно делать, значок моего приложения должен быть 2. then? –

+1

Чтобы удалить push-уведомление, вы должны установить 'applicationBadegNumber' равным 0. После этого вы можете установить его на 2 для локальных уведомлений. – rckoenes

+0

, если я делаю 'applicationBadegNumber = 0', он удаляет все уведомления из NC? или удалить только Push noti. ? –

2

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

-(void)scheduleLocalNotification{ 
    [self cancelAlarm]; //clear any previous alarms 
    UILocalNotification *alarm = [[UILocalNotification alloc] init]; 
    alarm.alertBody = @"alert msg"; 
    alarm.fireDate = [NSDate dateWithTimeInterval:alarmDuration sinceDate:startTime]; 
    alarm.soundName = UILocalNotificationDefaultSoundName; 
    NSDictionary *userInfo = [NSDictionary dictionaryWithObject:@"localNotification" forKey:@"localNotification"]; 
    alarm.userInfo = userInfo; 
    [[UIApplication sharedApplication] scheduleLocalNotification:alarm]; 

}

-(void)cancelNotification{ 
for (UILocalNotification *notification in [[[UIApplication sharedApplication] scheduledLocalNotifications] copy]){ 
    NSDictionary *userInfo = notification.userInfo; 
    if (![self.key isEqualToString:[userInfo objectForKey:localNotification]]){ 
     [[UIApplication sharedApplication] cancelLocalNotification:notification]; 
    } 
} 

}

+0

Да, я очищен, чтобы обрабатывать локальное уведомление, но предположим, что если в NC есть общее 3 уведомления, то 1 приходит из локального уведомления и два из push (от сервера) в этом случае, как я могу его обработать? Я нажимаю на первое уведомление (приходит от сервера) в NC. в этом случае, что нужно делать, мой значок приложения должен быть 2.n в NC, как я могу показать только оставшиеся уведомления. –

+0

Я не понимаю, что вы говорите ... что вы хотите делать на самом деле. удалить любое уведомление или значок? – PJR

+0

yes удалять только уведомления, которые поступают с сервера (push), а не локальные. –

0

applicationbadgenumber управляет вами. Удаление запланированных уведомлений не изменит этот номер. Ты должен сам справиться с этим. Некоторое время назад я представил презентацию, которая могла бы помочь. http://www.youtube.com/watch?v=ixQqZWtn0pg Начать смотреть в 11:50.

Смежные вопросы