1

アップルのドキュメントによるとhttps://developer.apple.com/reference/foundation/nsusernotification/1416410-identifier

NSUserNotification には、識別子が別の通知と同じ場合に通知を置き換えると想定される識別子というプロパティがあります。

この機能をテストしていたところ、通知が実際には置き換えられず、送信されていないようです。

通知センターに 1 種類の通知しか存在しないが、呼び出された最新の通知が一番上に更新されるという効果を得るにはどうすればよいですか?

通知 A + 通知 B + 通知 A を 1 分遅れで送信

これは、Mac通知センターに表示されているものです

識別子なし

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

識別子付き

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

識別子が存在するため、通知 A (2 回目) が呼び出されないことに注意してください。

望ましい効果

NotificationA (now) 
NotificationB (1 minute ago)

この状況では、通知 A が再度送信され、以前の通知 A はなくなります。

4

1 に答える 1

2

sメソッドnotificationを使用して既存のものを削除できます。通知を削除して再度追加するだけです。NSNotificationCenterremoveDeliveredNotification:

Objective-C

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

迅速

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

この手法を使用して、通知センターを汚染することなく通知を表示することに成功しました。

于 2016-07-20T09:43:41.923 に答える