gpt4 book ai didi

cocoa - NSUserNotificationCenter 关闭通知

转载 作者:行者123 更新时间:2023-12-03 16:01:54 25 4
gpt4 key购买 nike

我正在尝试为我的应用程序使用新的 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 一样。

我是唯一一个经历过这种情况的人吗?还是我错过了一些东西来以编程方式消除通知的屏幕部分和通知中心部分?

最佳答案

消息应用程序可能正在使用私有(private) NSUserNotificationCenter _removeAllDisplayedNotifications_removeDisplayedNotification: 方法。

您可以尝试使用这些方法来测试这是否是您正在寻找的。只需添加此类别接口(interface)来声明方法即可:

@interface NSUserNotificationCenter (Private)
- (void)_removeAllDisplayedNotifications;
- (void)_removeDisplayedNotification:(NSUserNotification *)notification;
@end

不幸的是,由于这些是未记录的方法,因此您无法在通过 App Store 分发的应用程序中使用它们。如果这确实是您正在寻找的,那么您应该 file a bug并要求这些方法成为公共(public) API 的一部分。

关于cocoa - NSUserNotificationCenter 关闭通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12113300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com