Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c ObjectiveC-如何使用NSUserNotification标识符属性_Objective C_Cocoa_Notifications_Nsusernotification_Nsusernotificationcenter - Fatal编程技术网

Objective c ObjectiveC-如何使用NSUserNotification标识符属性

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,并且以前的通知

根据苹果公司的文件

NSUserNotification有一个名为identifier的属性,假设该属性在标识符与另一个通知相同时替换通知

然而,当我测试这个特性时,似乎通知并没有真正被替换,只是没有发送

如果通知中心中只存在一种类型的通知,但最新的一种通知被更新到顶部,我将如何实现这种效果

发送通知A+通知B+延迟1分钟的通知A

这是mac通知中心上显示的内容

无标识符

带有标识符的

请注意,由于标识符存在,通知A(第二次)如何未被调用

理想效果


在这种情况下,会再次发送通知A,并且以前的通知A已消失

您可以使用
NSNotificationCenter
s
removeDeliveredNotification:
方法删除现有的
通知
。 只需删除并重新添加您的通知

目标-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)