Você pode salvar um valor exclusivo para a chave no userinfo de sua notificação local. Obtenha todas as notificações locais, percorra a matriz e exclua a notificação específica.
Codifique como segue,
OBJ-C:
UIApplication *app = [UIApplication sharedApplication];
NSArray *eventArray = [app scheduledLocalNotifications];
for (int i=0; i<[eventArray count]; i++)
{
UILocalNotification* oneEvent = [eventArray objectAtIndex:i];
NSDictionary *userInfoCurrent = oneEvent.userInfo;
NSString *uid=[NSString stringWithFormat:@"%@",[userInfoCurrent valueForKey:@"uid"]];
if ([uid isEqualToString:uidtodelete])
{
//Cancelling local notification
[app cancelLocalNotification:oneEvent];
break;
}
}
RÁPIDO:
var app:UIApplication = UIApplication.sharedApplication()
for oneEvent in app.scheduledLocalNotifications {
var notification = oneEvent as UILocalNotification
let userInfoCurrent = notification.userInfo! as [String:AnyObject]
let uid = userInfoCurrent["uid"]! as String
if uid == uidtodelete {
//Cancelling local notification
app.cancelLocalNotification(notification)
break;
}
}
Notificação do usuário:
Se você usa UserNotification (iOS 10+), basta seguir estas etapas:
Ao criar o conteúdo UserNotification, adicione um identificador exclusivo
Remova notificações pendentes específicas usando removePendingNotificationRequests (withIdentifiers :)
Remova notificações entregues específicas usando removeDeliveredNotifications (withIdentifiers :)
Para mais informações, UNUserNotificationCenter
NSDictionary
com o valor do id da entidade relacionada aoUILocalNotification
. Em seguida, defina a propriedade notification.userInfo para o dicionário com seus dados personalizados. Agora, quando você receber as notificações, poderá diferenciá-las com aquele id personalizado ou qualquer outra coisa de que precise.Outra opção:
Em primeiro lugar, ao criar uma notificação local, você pode armazená-la nos padrões do usuário para uso futuro. O objeto de notificação local não pode ser armazenado diretamente nos padrões do usuário. Este objeto precisa ser convertido em objeto NSData primeiro e, em seguida,
NSData
pode ser armazenado emUser defaults
. Abaixo está o código para isso:Depois de armazenar e programar a notificação local, no futuro, pode surgir a necessidade de cancelar qualquer notificação criada anteriormente, para que você possa recuperá-la dos padrões do usuário.
Espero que isto ajude
fonte
Aqui está o que eu faço.
Ao criar sua notificação, faça o seguinte:
ao tentar excluí-lo, faça o seguinte:
Esta solução deve funcionar para notificações múltiplas, e você não está gerenciando nenhuma matriz, dicionário ou padrão do usuário. Você simplesmente usa os dados já salvos no banco de dados de notificação do sistema.
Espero que isso ajude futuros designers e desenvolvedores.
Boas equipes de programação! : D
fonte
alertBody
oufireDate
para identificar uma notificação; use ouserInfo
campo para fazer isso, como a resposta por @KingOfBliss details ...Agendamento e remoção de notificação rapidamente:
fonte
alertBody
oufireDate
para identificar uma notificação; use ouserInfo
campo para fazer isso, como a resposta de @KingOfBliss details ...A solução iMOBDEV funciona perfeitamente para remover uma notificação específica (por exemplo, após excluir o alarme), mas é especialmente útil quando você precisa remover seletivamente qualquer notificação que já foi disparada e ainda está na central de notificações.
Um cenário possível seria: a notificação para um alarme dispara, mas o usuário abre o aplicativo sem tocar na notificação e programa o alarme novamente. Se você quiser ter certeza de que apenas uma notificação pode estar na central de notificações para um determinado item / alarme, é uma boa abordagem. Ele também permite que você não tenha que limpar todas as notificações toda vez que o aplicativo for aberto, o que se adequa melhor ao aplicativo.
NSKeyedArchiver
para armazená-la comoData
emUserDefaults
. Você pode criar uma chave igual ao que está salvando no dicionário userInfo da notificação. Se estiver associado a um objeto Core Data, você pode usar sua propriedade objectID exclusiva.NSKeyedUnarchiver
. Agora você pode excluí-lo usando o método cancelLocalNotification.UserDefaults
acordo.Aqui está uma versão Swift 3.1 dessa solução (para destinos abaixo do iOS 10):
Loja
Recuperar e excluir
fonte
Versão Swift, se necessário:
fonte
Solução Swift 4:
fonte
Você pode manter uma string com o identificador da categoria ao programar a notificação, como
e pesquise e cancele quando necessário
fonte
O objeto UILocalNotification que você passar
cancelLocalNotification:
corresponderá a qualquer objeto UILocalNotification existente com propriedades correspondentes.Assim:
apresentará uma notificação local que pode ser cancelada posteriormente com:
fonte
Eu uso esta função no Swift 2.0:
Inspirado na resposta de @KingofBliss
fonte
estilo 3 rápido:
}
para iOS 10, use:
fonte
Para lembretes repetidos (por exemplo, você deseja que seu alarme dispare no domingo, sábado e quarta-feira às 16h, então você deve fazer 3 alarmes e definir repeatInterval para NSWeekCalendarUnit).
Para fazer um lembrete único:
Para fazer lembretes repetidos:
Para Filtrar, você pode exibi-lo.
Para remover o lembrete, mesmo que seja apenas uma vez ou repetido:
fonte
Ampliei um pouco a resposta do KingofBliss, escrevi um pouco mais como o Swift2, removi alguns códigos desnecessários e adicionei alguns protetores de colisão.
Para começar, ao criar a notificação, você precisa ter certeza de definir o uid (ou qualquer propriedade personalizada) da notificação
userInfo
:Então, ao excluí-lo, você pode fazer:
fonte