删除 Mac OSX 上的预定通知

Remove scheduled notifications on Mac OSX

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

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

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

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

我删除了应用程序并清空了垃圾桶。我重新启动了 Mac。我在 settings/notification 中心 中切换了应用程序 on/off 的通知。都无济于事。

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

既不能从通知中心删除应用程序,也不能停止定时通知。

我还能做什么?

PS:准确地说:我检查了这个 posting,但没有任何效果。

好的,我自己解决了这个问题。该解决方案确实已经存在于 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 并重新登录。您现在应该没问题了。

我首先对我的应用程序仍列在 settings/notifications 中感到困惑。但至少烦人的通知不会再出现了。

祝你好运!