Objective c ObjectiveC-如何使用NSUserNotification标识符属性
根据苹果公司的文件 NSUserNotification有一个名为identifier的属性,假设该属性在标识符与另一个通知相同时替换通知 然而,当我测试这个特性时,似乎通知并没有真正被替换,只是没有发送 如果通知中心中只存在一种类型的通知,但最新的一种通知被更新到顶部,我将如何实现这种效果 发送通知A+通知B+延迟1分钟的通知A 这是mac通知中心上显示的内容 无标识符Objective c ObjectiveC-如何使用NSUserNotification标识符属性,objective-c,cocoa,notifications,nsusernotification,nsusernotificationcenter,Objective C,Cocoa,Notifications,Nsusernotification,Nsusernotificationcenter,根据苹果公司的文件 NSUserNotification有一个名为identifier的属性,假设该属性在标识符与另一个通知相同时替换通知 然而,当我测试这个特性时,似乎通知并没有真正被替换,只是没有发送 如果通知中心中只存在一种类型的通知,但最新的一种通知被更新到顶部,我将如何实现这种效果 发送通知A+通知B+延迟1分钟的通知A 这是mac通知中心上显示的内容 无标识符 带有标识符的 请注意,由于标识符存在,通知A(第二次)如何未被调用 理想效果 在这种情况下,会再次发送通知A,并且以前的通知
带有标识符的
请注意,由于标识符存在,通知A(第二次)如何未被调用 理想效果
在这种情况下,会再次发送通知A,并且以前的通知A已消失您可以使用
NSNotificationCenter
sremoveDeliveredNotification:
方法删除现有的通知
。
只需删除并重新添加您的通知
目标-C
[[NSUserNotificationCenter defaultUserNotificationCenter] removeDeliveredNotification:userNotification];
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:userNotification];
Swift
NSUserNotificationCenter.default.removeDeliveredNotification(userNotification)
NSUserNotificationCenter.default.deliver(userNotification)
我成功地使用了这种技术来显示通知,而不会污染通知中心。我们在Chrome中遇到了类似的问题,我们最终删除了通知并重新添加了它。默认情况下,代码尚未启用,但您可以通过切换一些标志来尝试。如果有帮助的话,很乐意提供更多信息。是的,谢谢你谢谢你的回答,但是顺序应该颠倒过来:首先删除以前的通知,然后发送新的。你说得对,在本例中,我们应该首先删除旧的通知。我在希望显示通知但不希望它出现在通知中心的地方使用了此代码
NotificationA (now)
NotificationB (1 minute ago)
[[NSUserNotificationCenter defaultUserNotificationCenter] removeDeliveredNotification:userNotification];
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:userNotification];
NSUserNotificationCenter.default.removeDeliveredNotification(userNotification)
NSUserNotificationCenter.default.deliver(userNotification)