Puede guardar un valor único para la clave en la información de usuario de su notificación local. Obtenga todas las notificaciones locales, recorra la matriz y elimine la notificación en particular.
Codifique como sigue,
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;
}
}
UserNotification:
Si usa UserNotification (iOS 10+), simplemente siga estos pasos:
Al crear el contenido de UserNotification, agregue un identificador único
Elimine la notificación pendiente específica usando removePendingNotificationRequests (withIdentifiers :)
Elimine la notificación entregada específica usando removeDeliveredNotifications (withIdentifiers :)
Para obtener más información, UNUserNotificationCenter
NSDictionary
con el valor de la identificación de la entidad relacionada conUILocalNotification
. Luego, establezca la propiedad notification.userInfo en el diccionario con sus datos personalizados. Ahora, cuando reciba las notificaciones, puede diferenciarlas con esa identificación personalizada o cualquier otra cosa que pueda necesitar.Otra opción:
En primer lugar, cuando crea una notificación local, puede almacenarla en los valores predeterminados del usuario para uso futuro, el objeto de notificación local no se puede almacenar directamente en los valores predeterminados del usuario, este objeto debe convertirse primero en un objeto NSData y luego
NSData
se puede almacenar enUser defaults
. A continuación se muestra el código para eso:Después de haber almacenado y programado la notificación local, en el futuro, puede surgir el requisito de cancelar cualquiera de las notificaciones que creó anteriormente, para que pueda recuperarla de los valores predeterminados del usuario.
Espero que esto ayude
fuente
Esto es lo que hago.
Al crear su notificación, haga esto:
al intentar eliminarlo, haga esto:
Esta solución debería funcionar para múltiples notificaciones y no administrar matrices, diccionarios o valores predeterminados del usuario. Simplemente usa los datos que ya ha guardado en la base de datos de notificaciones del sistema.
Espero que esto ayude a los futuros diseñadores y desarrolladores.
¡Felices chicos de codificación! :RE
fuente
alertBody
ofireDate
para identificar una notificación; use eluserInfo
campo para hacer esto, ya que la respuesta de @KingOfBliss detalla ...Programación y eliminación de notificaciones en rápido:
fuente
alertBody
ofireDate
para identificar una notificación; use eluserInfo
campo para hacer esto, ya que la respuesta de @KingOfBliss detalla ...La solución de iMOBDEV funciona perfectamente para eliminar una notificación específica (por ejemplo, después de eliminar la alarma), pero es especialmente útil cuando necesita eliminar de forma selectiva cualquier notificación que ya se haya disparado y todavía se encuentre en el centro de notificaciones.
Un escenario posible sería: la notificación de una alarma se dispara, pero el usuario abre la aplicación sin tocar esa notificación y programa esa alarma nuevamente. Si desea asegurarse de que solo pueda haber una notificación en el centro de notificaciones para un elemento / alarma determinado, es un buen enfoque. También le permite no tener que borrar todas las notificaciones cada vez que se abre la aplicación, si eso se ajusta mejor a la aplicación.
NSKeyedArchiver
para almacenarla comoData
enUserDefaults
. Puede crear una clave igual a la que está guardando en el diccionario userInfo de la notificación. Si está asociado con un objeto Core Data, puede usar su propiedad objectID única.NSKeyedUnarchiver
. Ahora puede eliminarlo utilizando el método cancelLocalNotification.UserDefaults
consecuencia.Aquí hay una versión Swift 3.1 de esa solución (para objetivos por debajo de iOS 10):
Tienda
Recuperar y eliminar
fuente
Versión rápida, si es necesario:
fuente
Solución Swift 4:
fuente
Puede mantener una cadena con el identificador de categoría al programar la notificación así
y búscalo y cancela cuando sea necesario así
fuente
El objeto UILocalNotification al que pase
cancelLocalNotification:
coincidirá con cualquier objeto UILocalNotification existente con propiedades coincidentes.Entonces:
presentará una notificación local que luego se puede cancelar con:
fuente
Yo uso esta función en Swift 2.0:
Inspirado en la respuesta de @ KingofBliss
fuente
Swift 3 estilos:
}
para uso de iOS 10:
fuente
Para recordatorios repetidos (por ejemplo, desea que su alarma se active los domingos, sábados y miércoles a las 4 p.m., luego debe hacer 3 alarmas y configurar repeatInterval en NSWeekCalendarUnit).
Para hacer un recordatorio de una sola vez:
Para hacer recordatorio repetido:
Para filtrar su matriz para mostrarlo.
Para eliminar el recordatorio incluso si fue solo una vez o se repitió:
fuente
Amplié un poco la respuesta de KingofBliss, escribí esto un poco más como Swift2, eliminé algunos códigos innecesarios y agregué algunos protectores contra choques.
Para comenzar, al crear la notificación, debe asegurarse de establecer el uid (o cualquier propiedad personalizada realmente) de la notificación
userInfo
:Luego, al eliminarlo, puede hacer:
fuente