2012-08-16 69 views
16

嘿,我正在制作一个小型的可可应用程序,并在Mountain Lion中使用新的Notification Center API。但是,我的应用程序现在位于通知中心设置中,与日历,消息等一起显示。从通知中心删除应用程序

因为这只是我玩耍,我希望它现在从列表中消失,但我无法找到任何删除它,尝试了几件事,拖出来,拿着ALT +右键点击等等。有没有人知道填充该列表的(可能是a)plist可能位于哪里?

回答

30

我被困在同一条船上。

虽然我不认为从通知中心清除曾经注册过的应用程序是有记录的步骤,但显然有一些东西需要设置。这是我发现的。这些数据不是存储在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_infoapp_sourcepresented_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> 

其中是您使用上面的选择命令找到正确的app_id。

令人沮丧的是,这样做后,一切都停留在通知中心(中心和系统偏好设置)。我必须注销并重新登录以查看更改才能生效,但幸运的是,我的多个测试应用程序现在不存在了;-)

如果有人知道一个不那么复杂的方式,我全都听。

+6

你可以'sudo killall usernoted'来避免注销。 – 2013-03-12 20:28:36

+7

10.10数据库移动到从终端运行该位置 cd $(getconf DARWIN_USER_DIR)/ com.apple.notificationcenter/db' – Hofi 2015-09-26 01:36:29

+0

删除后重新插入条目后重新启动。 – powder366 2017-04-08 07:41:40

0

变化中,你用用户通知玩弄项目的代码从您的应用程序委托的方法-applicationDidFinishLaunching:调用

[[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications]; 

。这将从用户通知中心删除所有用户通知。

+1

如果我尝试使用SCIUserNotificationCenter类,则无法编译。但是,如果我更改为NSUserNotificationCenter,它会编译,但我的应用程序仍然在列表中。 removeAllDeliveredNotifications可能只是一种清除任何当前通知的方法。您的应用程序仍将存在于通知中心列表中。编辑 – Krajsnick 2012-09-17 16:04:55

+0

以修正错字 - 在用户通知中心使用错误的前缀。 – 2012-09-18 15:55:26

0

你可以很容易地从Xcode做到这一点。

打开Organizer,然后选择顶部的Projects选项卡。 您将在左侧看到所有应用程序的列表。对于任何要删除的应用程序,请从左侧菜单中选择它,然后选择Delete...作为Derived Data

这仍然保留通知中心中的任何用户设置以及通知本身。

1

我只是重命名NotificationCenter文件夹中的文件,然后重新启动。创建了一个新文件,该文件仅填充了默认的应用程序。

+0

重命名文件的原始名称(完整路径?)是什么?这样做是否会重置通知中心的所有首选项设置? – 2012-09-24 13:04:29

7

如果您删除应用程序(可能需要清空垃圾桶)并注销并重新登录,它将从列表中删除。

+0

这就是最终为我做的(没有文件在'〜/ Library/Application Support/NotificationCenter'中)。 – theory 2015-01-09 22:05:58

3

当我陷入这个混乱时,下面的,也许是笨手笨脚的方法似乎对我有用。至少避免更改AppID/etc;

  1. 退出的XCode
  2. RM -rf〜/资源库/开发/ Xcode中/ DerivedData/*
  3. killall usernoted
  4. killall通知中心
  5. RM〜/库/ Application Support /通知中心/ *
  6. 开放系统首选项 - >通知(这似乎重新启动一切)

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

0
  1. 转到搜索器
  2. 搜索的Macintosh HD选项卡下的 “本机”
  3. 单击应用程序
  4. 按Shift +命令+ G
  5. Type在〜/库
  6. 点击应用支持
  7. 点击通知中心
  8. 将那里唯一的文件拖到垃圾箱
  9. 退出所有要去应用程式
  10. 清空回收站
  11. 重启

Tadaaa!根据个人经验,该应用程序已永久移除到您的通知中心。

0

我试图删除通知,但在我的情况下,它是一个网站(9to5mac)是确切的。我可以在System Preferences |中看到它通知并将其设置为禁用,但我继续收到通知。我终于弄明白了。对于需要进入Safari的网站,然后使用Safari偏好设置|网站,然后通知,然后找到该网站,并将其设置为拒绝或完全删除它。我在这里删除了9to5mac,一旦我做到了,它也从通用中心消失了,什么是皮塔饼!但至少有一种方法。

同样从我的搜索我也打开通知数据库文件与SQLite浏览器,我的网络通知“应用程序”不被发现,所以你必须在Safari中删除/禁用它。

相关问题