Удалить приложение из Центра уведомлений
Эй, я играл с небольшим приложением cocoa и использовал новый API Notification Center в Mountain Lion. Однако мое приложение теперь присутствует в настройках центра уведомлений, а также в Календаре, сообщениях и т.д.
Как только я играл, я хочу, чтобы он исчез из списка сейчас, но я не могу найти его, чтобы удалить его, пробовал несколько вещей, перетаскивая его, удерживая Alt + правый клик и так далее. Кто-нибудь знает, где находится (возможно, а) plist, который заполняет этот список?
Ответы
Ответ 1
Я застрял в одной лодке.
Хотя я не считаю, что очистка приложений из Центра уведомлений, которые когда-то были зарегистрированы, является документированным шагом, для этого явно существует какая-то настройка. Вот что я узнал. Эти данные не сохраняются в 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
и т.д. Кроме того, схема включает триггер очистки, который выглядит следующим образом:
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 (как в центре, так и в системных настройках). Мне пришлось выйти из системы и войти в систему, чтобы увидеть, как изменения вступят в силу, но, к счастью, мои многочисленные тестовые приложения теперь исчезли; -)
Если кто-то знает менее запутанный путь, я все уши.
Ответ 2
Если вы удалите приложение (возможно, необходимо также удалить мусор), и выйдите из системы и вернитесь, он будет удален из списка.
Ответ 3
Следующий, возможно, неуклюжий подход, кажется, работает для меня, когда я вхожу в этот беспорядок. Это позволяет избежать изменения AppID/и т.д. по крайней мере.
- Выйти из XCode
-
rm -rf ~/Library/Developer/Xcode/DerivedData/*
-
killall usernoted
-
killall NotificationCenter
-
rm ~/Library/Application Support/NotificationCenter/*
- Откройте Системные настройки → Уведомления (похоже, все перезагружается)
Перезагрузка/выход не требуется в этом методе.
Ответ 4
Я просто переименовал файл в папку NotificationCenter, а затем перезагрузился. Создан новый файл, в котором были заполнены только приложения по умолчанию.
Ответ 5
У меня были проблемы с 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
в High Sierra, кстати), однако запись исчезла из центра уведомлений.
Ответ 6
Измените код в проекте, который вы играли с уведомлениями пользователя, чтобы позвонить
[[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications];
из вашего метода делегирования приложения -applicationDidFinishLaunching:
. Это приведет к удалению всех уведомлений пользователей из центра уведомлений пользователя.
Ответ 7
Вы можете сделать это легко с Xcode.
Откройте Organizer
и выберите вкладку Projects
вверху.
На левой стороне вы увидите список всех ваших приложений. Для любого приложения, которое вы хотите удалить, выберите его в левом меню и выберите Delete...
для Derived Data
.
Это все еще сохраняет пользовательские настройки в Notification Center, а также сами уведомления.
Ответ 8
- Перейти в Finder
- Поиск Macintosh HD под вкладкой "Этот Mac"
- Нажмите "Приложения"
- Нажмите Shift + Command + G
- Введите ~/library
- Нажмите "Поддержка приложений"
- Нажмите Центр уведомлений
- Перетащите единственный файл, который есть в корзину
- Закройте все входящие приложения.
- Очистить корзину
- Restart
Tadaaa! Приложение было удалено в Центр уведомлений на основе личного опыта.
Ответ 9
Я пытался удалить уведомление, но в моем случае это было для веб-сайта (9to5mac), чтобы быть точным. Я мог бы увидеть его в System Preferences | Уведомления и установите его для отключения, но я продолжал получать уведомления. Я наконец-то понял. Для веб-сайтов вы должны войти в Safari, затем Настройки Safari | Веб-сайты, затем Уведомления, затем найдите веб-сайт и либо установите его на "Запретить", либо просто удалите его. Я удалил 9to5mac здесь, и однажды я это сделал, он также исчез из общего центра уведомлений, что за лаваш! но, по крайней мере, есть способ.
Кроме того, из моего поиска я также открыл файл DB уведомлений с помощью браузера sqlite, и мое "уведомление" о веб-уведомлении не было найдено, поэтому вам нужно его удалить или отключить в Safari.