0

我使用 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:准确地说:我检查了这个帖子,但没有任何工作。

4

1 回答 1

1

好的,我自己解决了这个问题。解决方案确实已经出现在之前的帖子中。但我不知何故没有正确应用它。因此,如果您在 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 the使用显示的 app_id` 值搜索您的应用。
  5. 删除应用程序信息记录,从而删除其他表中的任何相关数据delete from app_info where app_id = <your app id>
  6. 如有必要,将更改保存到数据库。
  7. 重新启动您的 Mac 并重新登录。您现在应该没事了。

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

祝你好运!

于 2017-08-01T17:58:00.900 回答