2014-01-29 4 views
1
UILocalNotification* localNotification = [[UILocalNotification alloc] init]; 
localNotification.alertBody =[NSString stringWithFormat:@"meeting schedule from %@ ",[namelist objectAtIndex:i]]; 
localNotification.timeZone = [NSTimeZone defaultTimeZone]; 
localNotification.soundName = @"meetting.mp3"; 
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 
[[NSNotificationCenter defaultCenter] postNotificationName:@"timerInvoked" object:self]; 

Я использую приведенный выше код для создания локальных уведомлений. Но предыдущие уведомления не очищаются. Он снова срабатывает при запуске новых уведомлений.Удалите UILocalNotification после обжига

Я использую [[UIApplication sharedApplication] cancelAllLocalNotifications];

Уведомление не обжигают в заднем месте. Как удалить уведомление после его увольнения?

+0

Где вы устанавливаете 'firedate' местного уведомления? Вы действительно получали уведомление? –

+0

Я использую локальное уведомление для отправки информации на уведомление из службы – Anupama

+0

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

ответ

0

cancelAllLocalNotifications удаляет ожидающие уведомления. Я не думаю, что вы можете удалить уведомления из центра уведомлений после их увольнения. Пользователь устанавливает (через приложение «Настройки») количество уведомлений, которые они хотят сохранить, и они автоматически удаляются, как только число превышает этот предел.

+0

Я новый пчела для ios.Я использую Local уведомление для нижеприведенного сценария. Я создаю приложение для чата ... Когда сообщения поступают из службы, я отправляю информацию в Notification.It отображается в уведомлении, но когда появляются новые данные, он отправляет новые сообщения со старым сообщением – Anupama

+0

. Просто вы не удаляете уведомление (или откройте приложение из уведомления). Итак, когда получено другое сообщение, теперь у вас есть 2 видимых уведомления? Вот как это должно быть ... – Wain

+0

Вы можете посмотреть на использование 'applicationIconBadgeNumber', чтобы показать, сколько непрочитанных сообщений есть. – Wain

0

Когда приложение получает локальное уведомление, будет вызван следующий метод. Положите его в приложение делегата:

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
{ 
    UIApplication *app = [UIApplication sharedApplication]; 
    NSInteger badgeNumber = [app applicationIconBadgeNumber];// Take the current badge number 
    badgeNumber--; // decrement by one 
    [app setApplicationIconBadgeNumber:badgeNumber]; // set ne badge number 
    [app cancelLocalNotification:notification]; // cancel the received notification. It will clear the notification from banner alos 
} 
+0

Этот код работает так же, как и раньше . Он отображает старые сообщения – Anupama

0

Если вы хотите, чтобы иметь возможность удалить определенные уведомления после того, как они уволены, вы должны будете хранить их.

После:

[[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 

Вы также сохранить его в NSUserDefaults, используя NSKeyedArchiver, чтобы преобразовать его в NSData.

NSData *notificationData = [NSKeyedArchiver archivedDataWithRootObject:localNotification]; 

[[NSUserDefaults standardUserDefaults] setObject:notificationData forKey:[NSString stringWithFormat:@"%d", someKeyOfYourChoice]]; 

Чтобы получить его обратно как UILocalNotification, вы используете NSKeyedUnarchiver. Затем вы можете удалить его с помощью метода cancelLocalNotification.

Далее объяснил here (версия Swift + ссылку на оригинальное решение Obj-C)

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