1

Selon les docs de pommes https://developer.apple.com/reference/foundation/nsusernotification/1416410-identifierObjectiveC - comment utiliser la propriété identifiant NSUserNotification

NSUserNotification possède une propriété appelée identifiant qui est supposé remplacer les notifications lorsque l'identifiant est identique à une autre notification.

Lorsque j'ai testé cette fonctionnalité, il semble toutefois que la notification n'est pas vraiment remplacée, mais pas envoyée.

Comment est-ce que j'obtiendrais l'effet où un seul type de notification est présent dans le centre de notification mais le dernier appelé est mis à jour vers le haut?

envoi d'une notification A + notification B + notification A avec un retard de 1 minute

C'est ce qui est montré sur le centre de notification mac

Sans identifiant

NotificationA (now) 
NotificationB (1 minute ago) 
NotificationA (2 minute ago) 

Avec identifiant

NotificationB (1 minute ago) 
NotificationA (2 minute ago) 

Remarquez comment la notification A (2 fois) n'est pas appelé en raison de l'identifiant étant présent

effet désiré

NotificationA (now) 
NotificationB (1 minute ago) 

Dans cette situation Notification A est envoyé à nouveau et la notification A précédente est annulée

+1

Nous avons rencontré un problème similaire dans Chrome et nous avons fini par supprimer la notification et l'ajouter à nouveau. Le code n'est pas encore activé par défaut mais vous pouvez l'essayer en basculant certains indicateurs. Heureux de fournir plus d'informations si cela vous aide. https://cs.chromium.org/chromium/src/chrome/browser/notifications/notification_platform_bridge_mac.mm?rcl=0&l=142 –

+0

Cela fait, merci – David

Répondre

2

Vous pouvez supprimer un notification existant en utilisant la méthode NSNotificationCenter s removeDeliveredNotification:. Supprimez et ajoutez à nouveau votre notification.

Objective-C

[[NSUserNotificationCenter defaultUserNotificationCenter] removeDeliveredNotification:userNotification]; 
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:userNotification]; 

Swift

NSUserNotificationCenter.default.removeDeliveredNotification(userNotification) 
NSUserNotificationCenter.default.deliver(userNotification) 

J'utilisé avec succès cette technique pour afficher les notifications sans polluer le centre de notification.

+0

Je viens de voir les commentaires de Miguel, je suppose qu'il était le premier .. – mangerlahn

+0

Cette réponse est beaucoup plus complète donc tout est bon :) –

+1

Merci pour la réponse, mais la commande doit être inversée: d'abord enlever la notification précédente et ensuite livrer de nouvelles. – Alek