【问题标题】:Remove scheduled notifications on Mac OSX在 Mac OSX 上删除预定通知
【发布时间】:2018-01-08 15:50:45
【问题描述】:

我使用 C#/Mono 用 NSUserNotificationCenter 安排通知,如下所示:

var not = new NSUserNotification();
not.Title = ...;
not.DeliveryDate = ...;
not.DeliveryRepeatInterval = new NSDateComponents() {
  Second = 65
};
...
NSUserNotificationCenter.DefaultUserNotificationCenter
                        .ScheduleNotification(not);

这按预期工作。出现一个初始通知,然后在 65 秒延迟后下一个,然后是下一个,依此类推。

但是:在我退出应用程序后,通知一直出现!他们仍然这样做。

我删除了应用程序并清空了垃圾桶。我重新启动了我的 Mac。我在设置/通知中心中打开/关闭了应用程序的通知。一切都无济于事。

我按照建议删除了 OSX Sierra 中的 SQLite 通知数据库。只有旧的 .db 文件。没有任何改变。

我不能从通知中心删除应用程序,也不能停止计划的通知。

我还能做什么?

PS:确切地说:我检查了这个posting,但没有任何工作。

【问题讨论】:

    标签: macos notifications nsusernotification nsusernotificationcenter


    【解决方案1】:

    好的,我自己解决了这个问题。解决方案确实已经存在于previous posting 中。但我不知何故没有正确应用它。因此,如果您在 OSX Sierra 上遇到不需要的通知,请按照以下步骤操作:

    1. 找到通知中心数据库:cd (getconf DARWIN_USER_DIR)/com.apple.notificationcenter/db(将()替换为反引号!)
    2. pwd 确定完整路径,例如/var/folders/b4/qw_sstpn1jqd8ypb1zgc7vww0000gn/0/com.apple.notificationcenter/db。这引用了一个目录,而不是一个文件!
    3. 在找到的目录中打开名为 db 的文件,例如/var/folders/b4/qw_sstpn1jqd8ypb1zgc7vww0000gn/0/com.apple.notificationcenter/db/db - 是的,最后是 db/db - 带有 SQLite 编辑器。
    4. 搜索您的应用并显示 select * from app_info where bundleid = "%yourappname%". Remember theapp_id` 值。
    5. 使用delete from app_info where app_id = <your app id>删除应用信息记录,从而删除其他表中的任何相关数据。
    6. 如有必要,将更改保存到数据库。
    7. 重新启动您的 Mac 并重新登录。您现在应该没事了。

    我首先对我的应用仍然在设置/通知中列出感到困惑。但至少不再出现烦人的通知。

    祝你好运!

    【讨论】:

    • 谢谢!我使用您的答案以及 Oscar Zhang 的答案here 通过编辑 db2 文件夹中的 db 文件来解决我的问题。我在 app 表中找到了 app_id,然后将其删除(这会导致“app_deleted”触发器从所有其他表中删除该应用程序)。这是为了莫哈韦沙漠。
    猜你喜欢
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 2014-03-20
    相关资源
    最近更新 更多