【发布时间】:2012-08-20 05:57:18
【问题描述】:
我正在尝试将新的 Mountain Lion NSUserNotificationCenter 用于我的应用程序(实际上并不太难)。通过
发布通知就像一个魅力NSUserNotification *userNotification = [[NSUserNotification alloc] init];
userNotification.title = @"Some title";
userNotification.informativeText = @"Some text";
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:userNotification];
但是,一旦应用获得焦点,我想关闭屏幕上的所有通知。例如。就像新的消息应用程序一样。在后台收到新消息时,会显示通知。当应用再次激活时,它们会自动关闭并从屏幕和通知中心消失。
为了复制这一点,我向NSApplicationDidBecomeActiveNotification 通知注册了一个方法,该方法也被成功调用。在那里我打电话给[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications]。
但是,这会导致在通知中心收集的通知被删除,而右上角显示的相应“气泡”仍然显示。
迭代所有传递的通知并单独删除它们具有完全相同的效果,就像使用 scheduleNotification 而不是 deliverNotification。
我是唯一遇到这种情况的人,还是我错过了以编程方式关闭通知的屏幕部分和通知中心部分的内容?
【问题讨论】:
-
听起来你应该在bugreport.apple.com上报告这个错误。
-
已经这样做了。我猜并不是苹果公司的任何人都真正阅读过它们,而只是为了完成。不确定我是否在这里遗漏了什么,但这是我的错。
-
你在什么情况下使用通知,你需要有'气泡'吗?
-
通知用于聊天应用程序。当收到消息并且应用程序未处于活动状态时,将显示通知 (cl.ly/J28h)。查看聊天时,通知中心的通知及其屏幕通知应被清除。现在,必须单击屏幕上的每条消息通知才能使其消失,如果您收到很多消息,这会很烦人。单击单个屏幕通知时,消息应用程序会清除联系人的所有通知。注意:通知会从通知中心移除,只保留屏幕上的通知。
标签: cocoa nsnotificationcenter osx-mountain-lion nsusernotification