从通知中心删除应用程序

rob*_*ahl 20 macos osx-mountain-lion nsusernotification

嘿,我正在玩一个小的可可应用程序并在Mountain Lion中使用新的Notification Center API.但是,我的应用程序现在存在于通知中心设置中,以及日历,消息等.

因为只是我在玩,我希望它现在从列表中消失,但我无论如何都找不到它,尝试了几件事,拖出来,按住alt +右键等等.有谁知道填充该列表的(可能是)plist位于何处?

Sea*_*fet 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;
Run Code Online (Sandbox Code Playgroud)

使用sqlite3客户端,如果你这样做

select * from app_info;
Run Code Online (Sandbox Code Playgroud)

第一列是app_id您的应用程序,第二列是您的应用程序的bundleid.根据bundleid查找您的应用程序.然后做一个

delete from app_info where app_id = <app_id>
Run Code Online (Sandbox Code Playgroud)

您使用上面的select命令找到了正确的app_id.

令人沮丧的是,在完成此操作后,NotificationCenter中的所有内容都处于中间位置(中心和系统偏好设置).我不得不退出并重新登录以查看更改是否生效,但幸运的是,我的多个测试应用程序现已消失;-)

如果有人知道一种不那么复杂的方式,我全都听见了.

  • 在10.10上,db移动到从终端`cd $(getconf DARWIN_USER_DIR)/ com.apple.notificationcenter/db`运行这个位置 (7认同)
  • 您可以"sudo killall usernoted"以避免退出. (6认同)

jws*_*art 16

突出显示列表中的应用程序,然后按fn+backspacedel/ delete(如果键盘上有该应用程序)。


小智 7

如果您删除的应用程序(可能需要清空回收站为好),并注销并重新登录的,它会从列表中删除.


Puf*_*fin 5

当我陷入困境时,以下也许是费力的方法似乎对我有用。它避免更改AppID / etc。至少。

  1. 退出XCode
  2. rm -rf ~/Library/Developer/Xcode/DerivedData/*
  3. killall usernoted
  4. killall NotificationCenter
  5. rm ~/Library/Application Support/NotificationCenter/*
  6. 打开系统偏好设置?通知(这似乎会重新启动所有内容)

此方法不需要重新启动/注销。


小智 5

我遇到了 BetterTouchTool 卸载后未从通知中心消失的问题。不幸的是,这里提到的方法对我不起作用,但我最终想通了。

对于在 High Sierra 下无法正常工作的任何人:

  1. 在终端中,导航到NotificationCenter文件夹:

    cd $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用 pwd 获取路径并复制到剪贴板(应该类似于 /var/folders/c3/289nmdsd2cz68yd5p47k553w0000gn/0/com.apple.notificationcenter)

    pwd
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在查找器中,转到文件夹(cmd+shift+g)并粘贴路径
  4. 找到包含 db 文件的文件夹并将整个文件夹拖到垃圾桶(我只有一个名为“db2”的文件夹)
  5. 清空垃圾桶!(这非常重要,没有它在我的机器上无法工作)
  6. 注销并再次登录

可能有一种更优雅的方式,但这对我有用。请注意,由于某种原因,数据库会被重建,而 application_id 仍然存在于 db 表中(app顺便说app_id一句,它是在 High Sierra 上调用的),但该条目从通知中心消失了。