Удаление приложения из Центра уведомлений
Эй, я играл с созданием небольшого приложения 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 по крайней мере;
- выйти из XCode
- rm-rf ~ / библиотека / разработчик / Xcode / DerivedData/*
- killall usernoted
- killall NotificationCenter
- rm ~ / библиотека / поддержка приложений / NotificationCenter/*
- открыть системные настройки - > уведомления (это, кажется, перезапуск все)
перезагрузка / выход из системы не требуется в этом методе.
Я просто переименовал файл в папке NotificationCenter, а затем перезагрузился. Был создан новый файл, который был заполнен только приложениями по умолчанию.
вы можете сделать это легко из Xcode.
открыть Organizer
и выберите Projects
вкладка вверху.
Вы увидите список всех ваших приложений на левой стороне. Для любого приложения, которое вы хотите удалить, выберите его в левом меню и выберите Delete...
на Derived Data
.
этого по-прежнему сохраняет все пользовательские настройки в Центре уведомлений, а также сами уведомлений.
измените код в проекте, который Вы играли с уведомлениями пользователя, чтобы позвонить
[[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications];
из метода делегата вашего приложения -applicationDidFinishLaunching:
. Это приведет к удалению всех уведомлений пользователей из центра уведомлений пользователей.
- перейти к Finder
- Поиск Macintosh HD под вкладкой "этот Mac"
- Выберите Приложения
- Нажмите Shift + Command + G
- введите ~ / library
- Нажмите Кнопку Поддержка Приложений
- Нажмите Центр Уведомлений
- перетащите единственный файл, который есть в корзину
- бросить все на going apps
- Очистить Корзину
- перезагрузка
Tadaaa! Приложение был удален в Центр уведомлений на постоянной основе на основе личного опыта.
Я пытался удалить уведомление, но в моем случае это было для веб-сайта (9to5mac), чтобы быть точным. Я мог видеть его в Системных настройках / уведомлениях и установить его отключенным, но я продолжал получать уведомления. Наконец-то я понял. Для веб-сайтов вам нужно зайти в Safari, затем настройки | веб-сайты Safari, затем уведомления, затем найти веб-сайт и либо установить его для отказа, либо просто удалить его полностью. Я удалил 9to5mac здесь, и как только я это сделал, он ушел от генерала Центр уведомлений, а также, что Пита! но, по крайней мере, есть способ.
также из моего поиска я тоже открыл файл DB уведомлений с браузером sqlite, и мое веб-уведомление "приложение" не было найдено, поэтому вам нужно удалить/отключить его в Safari.
у меня были проблемы с BetterTouchTool не исчезая из Центра уведомлений после удаления. К сожалению, методы, упомянутые здесь, не сработали для меня, но я понял это в конце концов.
для тех, у кого возникли проблемы с тем, чтобы это работало под High Sierra:
-
в терминале перейдите в папку NotificationCenter:
cd $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
-
получить путь с помощью pwd и скопировать в буфер обмена (должно быть что-то вроде /var / folders/c3/289nmdsd2cz68yd5p47k553w0000gn/0 / com.яблоко.notificationcenter)
pwd
- в finder перейдите в папку (cmd+shift+g) и вставьте путь
- найдите папку, содержащую файл БД и перетащить всю папку в корзину (У меня была только одна папка с именем "db2")
- Очистить Корзину! (Это очень важно, не работал на моей машине без него)
- выйти и снова
там может быть более элегантный способ, но это сработало для меня.
Обратите внимание, что по какой-то причине база данных перестраивается с application_id, все еще присутствующим в db-таблице (которая называется app
вместо app_id
на High Sierra, кстати), однако запись исчезла из центра уведомлений.