嘿,我正在玩一个小的可可应用程序,并在Mountain Lion中使用新的Notification Center API。但是,我的应用程序现在存在于通知中心设置中,还有日历,消息等。
因为只是我在玩,我希望它现在从列表中消失,但我无论如何都找不到它,尝试了几件事,拖出来,按住alt +右键等等。有谁知道填充该列表的(可能是)plist位于何处?
答案 0 :(得分:31)
我被困在同一条船上。
虽然我不认为从Notification Center中删除已经注册的应用程序是一个记录步骤,但显然有一些设置可以做到这一点。这是我发现的。此数据不存储在plist中,而是存储在sqlite数据库中。
如果你看~/Library/Application Support/NotificationCenter/<id>
(在我的情况下,我只在NotificationCenter下有一个目录),你会在目录下看到一个<id>.db
文件。
编者注::Hofi指出自macOS 10.10 表示SQLite数据库可以在shell命令返回的目录中找到
$(getconf DARWIN_USER_DIR)com.apple.notificationcenter/db
,仅命名为db
。
在内部,我看到app_info
,app_source
,presented_notifications
等表格。此外,架构包含一个清理触发器,如下所示:
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_id
,第二列是应用程序的bundleid。根据bundleid查找您的应用程序。然后做一个
delete from app_info where app_id = <app_id>
您使用上面的select命令找到了正确的app_id。
令人沮丧的是,在执行此操作后,NotificationCenter中的所有内容都处于中间位置(中心和系统偏好设置)。我必须注销并重新登录才能看到更改生效,但幸运的是,我的多个测试应用程序现已消失; - )
如果有人知道一种不太复杂的方式,我全都听见了。
答案 1 :(得分:7)
如果您删除了该应用程序(可能还需要清空垃圾箱)并注销并重新登录,则会从列表中删除它。
答案 2 :(得分:4)
当我陷入困境时,以下,也许是严厉的方法似乎对我有用。它避免更改AppID /等。至少。
rm -rf ~/Library/Developer/Xcode/DerivedData/*
killall usernoted
killall NotificationCenter
rm ~/Library/Application Support/NotificationCenter/*
此方法不需要重新启动/注销。
答案 3 :(得分:1)
我只是将文件重命名为NotificationCenter文件夹,然后重新启动。创建了一个新文件,该文件仅使用默认应用程序填充。
答案 4 :(得分:1)
卸载后,我遇到了BetterTouchTool无法从通知中心消失的问题。不幸的是,这里提到的方法对我不起作用,但我最终弄清楚了。
对于无法在High Sierra下工作的任何人:
在终端中,导航到NotificationCenter文件夹:
cd $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
使用pwd获取路径并复制到剪贴板 (应该类似于/var/folders/c3/289nmdsd2cz68yd5p47k553w0000gn/0/com.apple.notificationcenter)
pwd
也许有一种更优雅的方式,但这对我有用。
请注意,由于某种原因,数据库被重建,而application_id仍然存在于db-table中(在High Sierra,btw中称为app
而不是app_id
),但是该条目从通知中消失了中心。
答案 5 :(得分:0)
使用用户通知更改您正在播放的项目中的代码以调用
[[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications];
来自您的app delegate的方法-applicationDidFinishLaunching:
。这将从用户通知中心删除所有用户通知。
答案 6 :(得分:0)
您可以从Xcode轻松完成此操作。
打开Organizer
,然后选择顶部的Projects
标签。
您将在左侧看到所有应用程序的列表。对于您要删除的任何应用,请从左侧菜单中选择它,然后为Delete...
选择Derived Data
。
这仍然保留了通知中心中的所有用户设置以及通知本身。
答案 7 :(得分:0)
Tadaaa!该应用程序已根据个人经验永久删除到您的通知中心。
答案 8 :(得分:0)
我试图删除通知,但在我的情况下,确切地说是一个网站(9to5mac)。我可以在系统偏好设置中看到它通知并将其设置为禁用,但我继续收到通知。我终于弄明白了。对于您必须进入Safari的网站,然后是Safari首选项|网站,然后通知,然后找到网站,并将其设置为拒绝或完全删除它。我在这里删除了9to5mac,一旦我这样做了,它也从一般的通知中心消失了,真是个皮塔饼!但至少有一种方法。
同样从我的搜索中,我也用sqlite浏览器和我的网络通知打开了通知数据库文件&#34; app&#34;找不到,所以你必须在Safari中删除/禁用它。
答案 9 :(得分:0)
突出显示列表中的应用,然后在键盘上按fn
+ backspace
或del
/ delete
。
答案 10 :(得分:0)
对于macOS Catalina,使用lsof -p $(ps aux | grep -m1 usernoted | awk '{ print $2 }')| awk '{ print $NF }' | grep 'db2/db$' | xargs dirname