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

Привет, я занимался созданием небольшого приложения для какао и использованием нового 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 как минимум;

  1. выйти из XCode
  2. rm -rf ~ / Библиотека / Разработчик / Xcode / DerivedData /*
  3. killall отмечен
  4. killall NotificationCenter
  5. rm ~ / Библиотека / Поддержка приложений / Центр уведомлений /*
  6. Откройте Системные настройки -> Уведомления (похоже, все перезагружается)

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

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

Для любого, кто испытывает затруднения, заставляя это работать под Высшей Сьеррой:

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

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

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

Там может быть более элегантный способ, но это сработало для меня. Обратите внимание, что по какой-то причине база данных перестраивается с помощью 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

  1. Перейти к Finder
  2. Поиск Macintosh HD во вкладке "Этот Mac"
  3. Нажмите Приложения
  4. Нажмите Shift + Command + G
  5. Введите ~/ библиотека
  6. Нажмите Поддержка приложений
  7. Нажмите Центр уведомлений
  8. Перетащите единственный файл в корзину
  9. Выйти из всех идущих приложений
  10. Пустая корзина
  11. Запустить снова

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

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

[[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications];

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

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

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

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

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

Я пытался удалить уведомление, но в моем случае это был веб-сайт (9to5mac), чтобы быть точным. Я мог ВИДЕТЬ это в Системных настройках | Уведомления и отключить его, но я продолжал получать уведомления. Я наконец-то понял. Для веб-сайтов вы должны перейти в Safari, а затем Safari Настройки | Веб-сайты, затем Уведомления, затем найдите веб-сайт и либо установите для него значение "Запретить", либо просто полностью удалите его. Я удалил 9to5mac здесь, и как только я это сделал, он также исчез из общего Центра уведомлений, какая лава! но по крайней мере есть способ.

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

Другие вопросы по тегам