我正在尝试在我的应用中使用新的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
也是如此。
我是唯一遇到这个问题的人吗?还是我错过了一些东西来编程地解除通知的屏幕部分和通知中心部分?