Macos 从通知中心删除应用程序
嘿,我在玩一个小cocoa应用程序,并在Mountain Lion中使用新的通知中心API。但是,我的应用程序现在与日历、消息等一起出现在通知中心设置中Macos 从通知中心删除应用程序,macos,osx-mountain-lion,nsusernotification,Macos,Osx Mountain Lion,Nsusernotification,嘿,我在玩一个小cocoa应用程序,并在Mountain Lion中使用新的通知中心API。但是,我的应用程序现在与日历、消息等一起出现在通知中心设置中 由于只是我在玩,我希望它现在从列表中消失,但我找不到任何方法来删除它,尝试了几种方法,将其拖出,按住alt+右键单击等等。有人知道填充该列表的(可能是一个)plist的位置吗?更改项目中的代码,在该项目中使用用户通知进行调用 [[NSUserNotificationCenter defaultUserNotificationCenter] re
由于只是我在玩,我希望它现在从列表中消失,但我找不到任何方法来删除它,尝试了几种方法,将其拖出,按住alt+右键单击等等。有人知道填充该列表的(可能是一个)plist的位置吗?更改项目中的代码,在该项目中使用用户通知进行调用
[[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications];
从应用程序代理的方法
-applicationdFinishLaunching:
。这将从用户通知中心删除所有用户通知。我被困在同一条船上
虽然我不认为从NotificationCenter中清除已注册的应用程序是一个有文档记录的步骤,但显然有一些设置可以做到这一点。这是我发现的。这些数据不是存储在plist中,而是存储在sqlite数据库中
如果您查看~/Library/Application Support/NotificationCenter/
(在我的例子中,NotificationCenter下只有一个目录),您将在该目录下看到一个.db
文件
编者按:指出由于macOS 10.10说SQLite数据库可以在shell命令返回的目录中找到$(getconf DARWIN\u USER\u DIR)com.apple.notificationcenter/db
,名为justdb
翻进去,我看到了一些表,如app\u info
,app\u source
,呈现的\u通知
,等等。此外,模式包括一个清理触发器,如下所示:
CREATE TRIGGER app_deleted AFTER DELETE ON app_info
BEGIN
DELETE FROM scheduled_notifications WHERE app_id=old.app_id;
DELETE FROM presented_notifications WHERE app_id=old.app_id;
DELETE FROM presented_alerts WHERE app_id=old.app_id;
DELETE FROM notifications WHERE app_id=old.app_id;
DELETE FROM app_push WHERE app_id=old.app_id;
DELETE FROM app_loc WHERE app_id=old.app_id;
DELETE FROM app_source WHERE app_id=old.app_id;
END;
使用sqlite3客户端,如果您执行
select * from app_info;
第一列是应用程序的app\u id
,第二列是应用程序的bundleid。根据bundleid查找您的应用程序。然后做一个测试
delete from app_info where app_id = <app_id>
从应用程序信息中删除,其中应用程序id=
其中是使用上面的select命令找到的正确应用程序id
令人沮丧的是,在这样做之后,所有东西都留在NotificationCenter(中心和系统首选项)。我必须注销并重新登录才能看到更改生效,但幸运的是,我的多个测试应用程序现在已不存在;-)
如果有人知道一种不那么复杂的方法,我洗耳恭听。您可以在Xcode中轻松做到这一点 打开
组织者
,然后选择顶部的项目
选项卡。
您将在左侧看到所有应用程序的列表。对于要删除的任何应用程序,请从左侧菜单中选择它,然后选择Delete…
作为派生数据的
这仍然保留NotificationCenter中的任何用户设置以及通知本身。我只是在NotificationCenter文件夹中重命名了该文件,然后重新启动。创建了一个仅使用默认应用程序填充的新文件。如果您删除该应用程序(可能还需要清空垃圾箱)并注销并重新登录,它将从列表中删除。当我陷入困境时,以下可能是严厉的方法似乎对我有效。至少可以避免更改AppID/等
退出XCode
rm-rf~/Library/Developer/Xcode/DerivedData/*
killall usernoted
killall通知中心
rm~/Library/Application Support/NotificationCenter/*
开放系统首选项→ 通知(这似乎重新启动了一切)
此方法中不需要重新启动/注销
去找Finder
在“此Mac”选项卡下搜索Macintosh HD
单击应用程序
按Shift+Command+G
输入~/library
单击应用程序支持
单击通知中心
将唯一存在的文件拖到垃圾箱中
退出所有正在运行的应用程序
空垃圾
重新启动
塔达阿!该应用程序已根据个人经验永久删除到您的通知中心 我试图删除一个通知,但在我的例子中,确切地说是一个网站(9to5mac)。我可以在System Preferences | Notifications中看到它并将其设置为禁用,但我继续收到通知。我终于明白了。对于网站,您必须进入Safari,然后进入Safari首选项、网站、通知,然后找到该网站并将其设置为拒绝,或者干脆将其全部删除。我在这里删除了9到5MAC,一旦我删除了,它也从通用通知中心消失了,真是一个pita!但至少有办法
另外,在搜索过程中,我也使用sqlite浏览器打开了通知数据库文件,但找不到我的web通知“app”,因此您必须在Safari中删除/禁用它。卸载后,BetterTouchTool没有从通知中心消失,这使我遇到了麻烦。不幸的是,这里提到的方法对我不起作用,但我最终找到了答案
对于在高强度条件下无法使其工作的任何人:
在终端中,导航到NotificationCenter文件夹:
cd $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
使用pwd获取路径并复制到剪贴板
(应该类似于/var/folders/c3/289nmdsd2cz68yd5p47k553w0000gn/0/com.apple.notificationcenter)
在finder中,转到文件夹(cmd+shift+g)并粘贴路径
找到包含db文件的文件夹,并将整个文件夹拖到垃圾箱中
(我只有一个名为“db2”的文件夹)
空垃圾!(这非常重要,没有它我的机器无法工作)
注销并重新登录
也许有一种更优雅的方式,但这对我很有效。
请注意,由于某些原因,数据库重建时应用程序id仍然存在于db表中(称为app
,而不是pwd