Vous pouvez enregistrer une valeur unique pour la clé dans les informations utilisateur de votre notification locale. Obtenez toutes les notifications locales, parcourez le tableau et supprimez la notification particulière.
Code comme suit,
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;
}
}
RAPIDE:
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;
}
}
Notification de l'utilisateur:
Si vous utilisez UserNotification (iOS 10+), suivez simplement ces étapes:
Lors de la création du contenu UserNotification, ajoutez un identifiant unique
Supprimer une notification spécifique en attente à l'aide de removePendingNotificationRequests (withIdentifiers :)
Supprimez la notification livrée spécifique à l'aide de removeDeliveredNotifications (withIdentifiers :)
Pour plus d'informations, UNUserNotificationCenter
NSDictionary
avec la valeur de l'id de l'entité liée auUILocalNotification
. Définissez ensuite la propriété notification.userInfo sur le dictionnaire avec vos données personnalisées. Désormais, lorsque vous recevez les notifications, vous pouvez les distinguer avec cet identifiant personnalisé ou tout ce dont vous avez besoin.Autre option:
Tout d'abord, lorsque vous créez une notification locale, vous pouvez la stocker dans les valeurs par défaut de l'utilisateur pour une utilisation future, l'objet de notification local ne peut pas être stocké directement dans les valeurs par défaut de l'utilisateur, cet objet doit d'abord être converti en objet NSData, puis
NSData
peut être stocké dansUser defaults
. Voici le code pour cela:Après avoir stocké et planifié la notification locale, à l'avenir, il se peut que vous deviez annuler toute notification que vous avez créée précédemment, afin que vous puissiez la récupérer à partir des paramètres par défaut de l'utilisateur.
J'espère que cela t'aides
la source
Voici ce que je fais.
Lors de la création de votre notification, procédez comme suit:
lorsque vous essayez de le supprimer, procédez comme suit:
Cette solution devrait fonctionner pour plusieurs notifications, et vous ne gérez pas de tableaux, de dictionnaires ou de paramètres par défaut de l'utilisateur. Vous utilisez simplement les données que vous avez déjà enregistrées dans la base de données de notification des systèmes.
J'espère que cela aidera les futurs concepteurs et développeurs.
Heureux les gars de codage! :RÉ
la source
alertBody
oufireDate
pour identifier une notification; utilisez leuserInfo
champ pour ce faire, comme la réponse de @KingOfBliss détaille ...Planification et suppression de la notification dans Swift:
la source
alertBody
oufireDate
pour identifier une notification; utilisez leuserInfo
champ pour ce faire, comme la réponse de @KingOfBliss détaille ...La solution iMOBDEV fonctionne parfaitement pour supprimer une notification spécifique (par exemple après la suppression de l'alarme) mais elle est particulièrement utile lorsque vous devez supprimer sélectivement toute notification qui a déjà été déclenchée et est toujours sur le centre de notification.
Un scénario possible serait: la notification d'une alarme se déclenche, mais l'utilisateur ouvre l'application sans appuyer sur cette notification et planifie à nouveau cette alarme. Si vous voulez vous assurer qu'une seule notification peut être sur le centre de notification pour un élément / alarme donné, c'est une bonne approche. Cela vous permet également de ne pas avoir à effacer toutes les notifications à chaque fois que l'application est ouverte, si cela convient mieux à l'application.
NSKeyedArchiver
pour la stocker commeData
dansUserDefaults
. Vous pouvez créer une clé égale à ce que vous enregistrez dans le dictionnaire userInfo de la notification. S'il est associé à un objet Core Data, vous pouvez utiliser sa propriété objectID unique.NSKeyedUnarchiver
. Vous pouvez maintenant le supprimer à l'aide de la méthode cancelLocalNotification.UserDefaults
conséquence.Voici une version Swift 3.1 de cette solution (pour les cibles inférieures à iOS 10):
Boutique
Récupérer et supprimer
la source
Version Swift, si besoin:
la source
Solution Swift 4:
la source
Vous pouvez conserver une chaîne avec l'identificateur de catégorie lors de la planification de la notification comme ceci
et recherchez-le et annulez en cas de besoin comme tel
la source
L'objet UILocalNotification auquel vous passez
cancelLocalNotification:
correspondra à tout objet UILocalNotification existant avec des propriétés correspondantes.Alors:
présentera une notification locale qui pourra être annulée ultérieurement avec:
la source
J'utilise cette fonction dans Swift 2.0:
Inspiré de la réponse de @ KingofBliss
la source
style 3 rapide:
}
pour l'utilisation d'iOS 10:
la source
Pour les rappels répétés (par exemple, vous voulez que votre alarme se déclenche le dimanche, samedi et mercredi à 16 heures, puis vous devez faire 3 alarmes et régler repeatInterval sur NSWeekCalendarUnit).
Pour faire un rappel unique:
Pour faire un rappel répété:
Pour le filtrage, vous disposez d'un tableau pour l'afficher.
Pour supprimer le rappel même s'il était une fois seulement ou répété:
la source
J'ai développé un peu la réponse de KingofBliss, j'ai écrit ceci un peu plus à la manière de Swift2, supprimé du code inutile et ajouté des protections contre les accidents.
Pour commencer, lors de la création de la notification, vous devez vous assurer de définir l'uid (ou toute propriété personnalisée en fait) de la notification
userInfo
:Ensuite, lors de sa suppression, vous pouvez faire:
la source