macos osx-mountain-lion nsusernotification

macos - Eliminar la aplicación del Centro de notificaciones



osx-mountain-lion nsusernotification (8)

Oye, estaba jugando con hacer una pequeña aplicación de cacao y utilizando la nueva API del Centro de notificaciones en Mountain Lion. Sin embargo, mi aplicación ahora está presente en la configuración del centro de notificaciones, junto con Calendario, Mensajes, etc.

Como solo yo estaba jugando, ahora quiero que desaparezca de la lista, pero no puedo encontrarlo de todos modos para quitarlo, intenté varias cosas, arrastrándolo, manteniendo presionado alt + clic con el botón secundario y así sucesivamente. ¿Alguien sabe dónde podría ubicarse (probablemente una) plist que puebla esa lista?


Puedes hacerlo fácilmente desde Xcode.

Abra Organizer y seleccione la pestaña Projects en la parte superior. Verá una lista de todas sus aplicaciones en el lado izquierdo. Para cualquier aplicación que desee eliminar, selecciónela en el menú de la izquierda y elija Delete... para los Derived Data .

Esto aún conserva las configuraciones de usuario en el Centro de notificaciones, así como las notificaciones en sí mismas.


Cambie el código en el proyecto que estaba jugando con las notificaciones de usuario para llamar

[[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications];

desde el método del delegado de tu aplicación -applicationDidFinishLaunching: Esto eliminará todas las notificaciones de usuario del centro de notificaciones del usuario.


Simplemente cambié el nombre del archivo en la carpeta NotificationCenter, luego reinicié. Se creó un nuevo archivo que se completó solo con las aplicaciones predeterminadas.


Si elimina la aplicación (es posible que también deba vaciar la papelera) y cierre la sesión y vuelva a ingresar, se eliminará de la lista.


  1. Ir a Finder
  2. Busque Macintosh HD en la pestaña "Esta Mac"
  3. Haga clic en Aplicaciones
  4. Presiona Shift + Comando + G
  5. Escriba ~ / library
  6. Haga clic en Soporte de aplicaciones
  7. Haga clic en Centro de notificaciones
  8. Arrastre el único archivo que está allí a la Papelera
  9. Salir de todas las aplicaciones en marcha
  10. Papelera vacía
  11. Reiniciar

Tadaaa! La aplicación se ha eliminado a su Centro de notificaciones de forma permanente en función de su experiencia personal.


El siguiente enfoque, quizás de mano dura, parece funcionar para mí cuando me meto en este lío. Evita cambiar AppID / etc al menos;

  1. salir de XCode
  2. rm -rf ~ / Library / Developer / Xcode / DerivedData / *
  3. killall usernoted
  4. killall NotificationCenter
  5. rm ~ / Library / Application Support / NotificationCenter / *
  6. Abra Preferencias del sistema -> Notificaciones (esto parece reiniciar todo)

No es necesario reiniciar / cerrar sesión en este método.


Estaba atrapado en el mismo bote.

Si bien no creo que las aplicaciones de depuración del Centro de notificaciones que una vez se registraron sean un paso documentado, es evidente que hay algunas cosas configuradas para hacerlo. Esto es lo que descubrí. Esta información no se almacena en un plist, sino en una base de datos sqlite.

Si mira ~/Library/Application Support/NotificationCenter/<id> (en mi caso, solo tenía un directorio en NotificationCenter), verá un archivo <id>.db debajo del directorio.

Nota del editor : Hofi señala que, dado que macOS 10.10 dice que la base de datos SQLite se puede encontrar en el directorio devuelto por el comando de shell
$(getconf DARWIN_USER_DIR)com.apple.notificationcenter/db , nombrado simplemente db .

Metiendo dentro, veo tablas como app_info , app_source , presented_notifications , etc. Además, el esquema incluye un disparador de limpieza que se ve así:

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;

Usando un cliente sqlite3, si haces una

select * from app_info;

la primera columna es la app_id de su aplicación, la segunda columna es la combinación de su aplicación. Encuentra tu aplicación en base a bundleid. Entonces haz una

delete from app_info where app_id = <app_id>

¿dónde está el app_id correcto que encontraste usando tu comando de selección de arriba?

Lo que fue frustrante fue que después de hacer esto, todo permaneció en NotificationCenter (tanto en el centro como en las Preferencias del sistema). Tuve que cerrar la sesión y volver a iniciar sesión para ver los cambios surtir efecto, pero afortunadamente, mis múltiples aplicaciones de prueba ya no están ;-)

Si alguien sabe de una manera menos intrincada, soy todo oídos.


Estaba intentando eliminar una notificación, pero en mi caso fue para un sitio web (9to5mac) para ser exacto. Pude VERlo en Preferencias del Sistema | Notificaciones y configurarlo para ser deshabilitado, pero continué recibiendo notificaciones. Finalmente lo resolví. Para los sitios web, debe ingresar a Safari, luego Preferencias de Safari | Sitios web, luego Notificaciones, luego encuentre el sitio web y configúrelo en Denegar o simplemente elimínelo por completo. Quité 9to5mac aquí y una vez que lo hice, también desapareció del Centro de notificaciones general, ¡qué pita! pero al menos hay una manera.

También desde mi búsqueda, también abrí el archivo DB de notificación con un navegador sqlite y no se encontró mi "aplicación" de notificación web, por lo que debes eliminarla / deshabilitarla en Safari.