Удалить приложение из Центра уведомлений
Привет, я занимался созданием небольшого приложения для какао и использованием нового API Центра уведомлений в Mountain Lion. Однако мое приложение теперь присутствует в настройках центра уведомлений вместе с календарем, сообщениями и так далее.
Поскольку я просто играл, я хочу, чтобы он исчез из списка сейчас, но я не могу найти его, чтобы удалить его, попробовал несколько вещей, перетащив его, удерживая Alt+ правый клик и так далее. Кто-нибудь знает, где (вероятно, а) список может быть расположен в этом списке?
12 ответов
Я застрял в одной лодке.
Хотя я не верю, что удаление приложений из Центра уведомлений, которые когда-то были зарегистрированы, является документированным шагом, очевидно, что для этого есть некоторые настройки. Вот что я узнал. Эти данные хранятся не в 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_info
, app_source
, presented_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
вашего приложения, второй столбец - это комплект вашего приложения. Найдите свое приложение на основе пакета. Тогда сделай
delete from app_info where app_id = <app_id>
где правильный app_id, который вы нашли, используя команду select выше.
Что расстраивало, так это то, что после этого все оставалось в NotificationCenter (как в центре, так и в Системных настройках). Мне пришлось выйти и снова войти, чтобы изменения вступили в силу, но, к счастью, мои тестовые приложения исчезли;-)
Если кто-нибудь знает менее запутанный путь, я весь в ушах.
Выделите приложение в списке и нажмите fn
+backspace
или del
/delete
если у вас есть это на клавиатуре.
Если вы удалите приложение (возможно, потребуется очистить корзину), выйдите из системы и снова войдите в нее, оно будет удалено из списка.
Следующий, возможно, неуклюжий подход, кажется, работает для меня, когда я вхожу в этот беспорядок. Предотвращает изменение AppID/etc как минимум;
- выйти из XCode
- rm -rf ~ / Библиотека / Разработчик / Xcode / DerivedData /*
- killall отмечен
- killall NotificationCenter
- rm ~ / Библиотека / Поддержка приложений / Центр уведомлений /*
- Откройте Системные настройки -> Уведомления (похоже, все перезагружается)
Перезагрузка / выход не требуется в этом методе.
У меня были проблемы с BetterTouchTool, не исчезающим из Центра уведомлений после удаления. К сожалению, методы, упомянутые здесь, не работали для меня, но я понял это в конце концов.
Для любого, кто испытывает затруднения, заставляя это работать под Высшей Сьеррой:
В терминале перейдите в папку NotificationCenter:
cd $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
получить путь с помощью pwd и скопировать в буфер обмена (должно быть что-то вроде /var/folders/c3/289nmdsd2cz68yd5p47k553w0000gn/0/com.apple.notificationcenter)
pwd
- В поиске перейдите в папку (cmd+shift+g) и вставьте путь
- Найдите папку, содержащую файл db, и перетащите всю папку в корзину (у меня была только одна папка с именем "db2")
- Пустая корзина! (Это очень важно, не работал на моей машине без него)
- Выйти и снова войти
Там может быть более элегантный способ, но это сработало для меня. Обратите внимание, что по какой-то причине база данных перестраивается с помощью application_id, все еще присутствующего в db-таблице (которая называется app
вместо app_id
на Высокой Сьерре, между прочим), однако запись исчезла из центра уведомлений.
Я просто переименовал файл в папке NotificationCenter, а затем перезагрузил. Был создан новый файл, который был заполнен только приложениями по умолчанию.
Для macOS Catalina путь к базе данных можно найти с помощью
lsof -p $(ps aux | grep -m1 usernoted | awk '{ print $2 }')| awk '{ print $NF }' | grep 'db2/db$' | xargs dirname
- Перейти к Finder
- Поиск Macintosh HD во вкладке "Этот Mac"
- Нажмите Приложения
- Нажмите Shift + Command + G
- Введите ~/ библиотека
- Нажмите Поддержка приложений
- Нажмите Центр уведомлений
- Перетащите единственный файл в корзину
- Выйти из всех идущих приложений
- Пустая корзина
- Запустить снова
Tadaaa! Приложение было удалено в ваш Центр уведомлений навсегда на основе личного опыта.
Измените код в проекте, который вы играли с пользовательскими уведомлениями, чтобы позвонить
[[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications];
из метода делегата вашего приложения -applicationDidFinishLaunching:
, Это удалит все пользовательские уведомления из пользовательского центра уведомлений.
У меня было 3, думаю, это были не приложения, а уведомления сайта. очистил историю и расширения из сафари и хрома. они исчезли из центра уведомлений. (биг-сюр)
Вы можете сделать это легко из Xcode.
открыто Organizer
и выберите Projects
вкладка вверху. Вы увидите список всех ваших приложений на левой стороне. Для любого приложения, которое вы хотите удалить, выберите его в меню слева и выберите Delete...
для Derived Data
,
При этом сохраняются все пользовательские настройки в Центре уведомлений, а также сами уведомления.
Я пытался удалить уведомление, но в моем случае это был веб-сайт (9to5mac), чтобы быть точным. Я мог ВИДЕТЬ это в Системных настройках | Уведомления и отключить его, но я продолжал получать уведомления. Я наконец-то понял. Для веб-сайтов вы должны перейти в Safari, а затем Safari Настройки | Веб-сайты, затем Уведомления, затем найдите веб-сайт и либо установите для него значение "Запретить", либо просто полностью удалите его. Я удалил 9to5mac здесь, и как только я это сделал, он также исчез из общего Центра уведомлений, какая лава! но по крайней мере есть способ.
Кроме того, из моего поиска я также открыл файл базы данных уведомлений с помощью браузера sqlite, и мое "веб-приложение" для уведомлений не было найдено, поэтому вы должны удалить / отключить его в Safari.