Удаление приложения из Центра уведомлений

Эй, я играл с созданием небольшого приложения cocoa и использованием нового API Центра уведомлений в Mountain Lion. Однако мое приложение теперь присутствует в настройках центра уведомлений вместе с календарем, сообщениями и так далее.

Как это было только я играл вокруг я хочу, чтобы он исчез из списка сейчас, но я не могу найти в любом случае, чтобы удалить его, попробовал несколько вещей, перетащив его, удерживая alt+правый клик и так далее. Кто-нибудь знает, где (возможно, a) plist что заполняет этот список?

9 ответов


Я застрял в одной лодке.

хотя я не считаю, что очистка приложений от центра уведомлений, которые когда-то зарегистрированы, является документированным шагом, для этого явно есть некоторые настройки. Вот что я выяснил. Эти данные хранятся не в plist, а в базе данных sqlite.

если вы посмотрите ~/Library/Application Support/NotificationCenter/<id> (в моем случае у меня был только один каталог, в NotificationCenter), вы увидите <id>.db файл в каталоге.

Примечание редактора: Hofi указывает, что начиная с macOS 10.10 база данных SQLite может быть найдена в каталоге, возвращаемом командой оболочки
$(getconf DARWIN_USER_DIR)com.apple.notificationcenter/db, названный просто db.

заглядывая внутрь, я вижу столы, как app_info, app_source, presented_notifications, etc. Кроме того, схема включает триггер очистки, который выглядит следующим образом:

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, который вы нашли, используя команду select выше.

что разочаровывало, так это то, что после этого все осталось в NotificationCenter (как центр, так и системные настройки). Мне пришлось выйти из системы и снова войти в систему, чтобы увидеть изменения эффект, но, к счастью, мои несколько тестовых приложений теперь ушли ; -)

если кто-нибудь знает менее запутанный способ, я весь внимание.


Если вы удалите приложение (возможно, также потребуется очистить корзину) и выйти из системы и вернуться, оно будет удалено из списка.


следующий, возможно, тяжелый подход, кажется, работает для меня, когда я вхожу в этот беспорядок. Избегает изменения AppID / etc по крайней мере;

  1. выйти из XCode
  2. rm-rf ~ / библиотека / разработчик / Xcode / DerivedData/*
  3. killall usernoted
  4. killall NotificationCenter
  5. rm ~ / библиотека / поддержка приложений / NotificationCenter/*
  6. открыть системные настройки - > уведомления (это, кажется, перезапуск все)

перезагрузка / выход из системы не требуется в этом методе.


Я просто переименовал файл в папке NotificationCenter, а затем перезагрузился. Был создан новый файл, который был заполнен только приложениями по умолчанию.


вы можете сделать это легко из Xcode.

открыть Organizer и выберите Projects вкладка вверху. Вы увидите список всех ваших приложений на левой стороне. Для любого приложения, которое вы хотите удалить, выберите его в левом меню и выберите Delete... на Derived Data.

этого по-прежнему сохраняет все пользовательские настройки в Центре уведомлений, а также сами уведомлений.


измените код в проекте, который Вы играли с уведомлениями пользователя, чтобы позвонить

[[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications];

из метода делегата вашего приложения -applicationDidFinishLaunching:. Это приведет к удалению всех уведомлений пользователей из центра уведомлений пользователей.


  1. перейти к Finder
  2. Поиск Macintosh HD под вкладкой "этот Mac"
  3. Выберите Приложения
  4. Нажмите Shift + Command + G
  5. введите ~ / library
  6. Нажмите Кнопку Поддержка Приложений
  7. Нажмите Центр Уведомлений
  8. перетащите единственный файл, который есть в корзину
  9. бросить все на going apps
  10. Очистить Корзину
  11. перезагрузка

Tadaaa! Приложение был удален в Центр уведомлений на постоянной основе на основе личного опыта.


Я пытался удалить уведомление, но в моем случае это было для веб-сайта (9to5mac), чтобы быть точным. Я мог видеть его в Системных настройках / уведомлениях и установить его отключенным, но я продолжал получать уведомления. Наконец-то я понял. Для веб-сайтов вам нужно зайти в Safari, затем настройки | веб-сайты Safari, затем уведомления, затем найти веб-сайт и либо установить его для отказа, либо просто удалить его полностью. Я удалил 9to5mac здесь, и как только я это сделал, он ушел от генерала Центр уведомлений, а также, что Пита! но, по крайней мере, есть способ.

также из моего поиска я тоже открыл файл DB уведомлений с браузером sqlite, и мое веб-уведомление "приложение" не было найдено, поэтому вам нужно удалить/отключить его в Safari.


у меня были проблемы с BetterTouchTool не исчезая из Центра уведомлений после удаления. К сожалению, методы, упомянутые здесь, не сработали для меня, но я понял это в конце концов.

для тех, у кого возникли проблемы с тем, чтобы это работало под High Sierra:

  1. в терминале перейдите в папку NotificationCenter:

    cd $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
    
  2. получить путь с помощью pwd и скопировать в буфер обмена (должно быть что-то вроде /var / folders/c3/289nmdsd2cz68yd5p47k553w0000gn/0 / com.яблоко.notificationcenter)

    pwd
    
  3. в finder перейдите в папку (cmd+shift+g) и вставьте путь
  4. найдите папку, содержащую файл БД и перетащить всю папку в корзину (У меня была только одна папка с именем "db2")
  5. Очистить Корзину! (Это очень важно, не работал на моей машине без него)
  6. выйти и снова

там может быть более элегантный способ, но это сработало для меня. Обратите внимание, что по какой-то причине база данных перестраивается с application_id, все еще присутствующим в db-таблице (которая называется app вместо app_id на High Sierra, кстати), однако запись исчезла из центра уведомлений.