osx – 从Notification Center中删除应用程序

嗨,我正在玩一个小可可应用程序,并在山狮中使用新的Notification Center API。然而,我的应用程序现在在通知中心设置中,与Celandar,消息等一起。

因为只是我在玩,我希望它现在从列表中消失,但我无法找到反正删除它,尝试了几件事,拖出来,按住右键单击等等。有谁知道哪个(可能是)plist填充该列表可能位于哪里?

我被困在同一条船上。

虽然我不相信从通知中心清除已经注册的应用程序是一个文档化的步骤,但显然有一些事情要做。这是我发现的。该数据不存储在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,presents_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是正确的。

令人沮丧的是,在这样做之后,通知中心(中心和系统偏好设置)都保持一切。我不得不注销并重新登录,看到更改生效,但幸运的是,我的多个测试应用程序现在已经不在了;-)

如果有人知道一个不那么复杂的方式,我就是耳朵。

翻译自:https://stackoverflow.com/questions/11993145/remove-application-from-notification-center

转载注明原文:osx – 从Notification Center中删除应用程序