I was stuck in the same boat.
While I don't believe purging applications from Notification Center that have once registered is a documented step, there's clearly some stuff setup to do that. Here's what I found out. This data isn't stored in a plist but rather a sqlite database.
If you look ~/Library/Application Support/NotificationCenter/<id>
(in my case, I only had one directory under NotificationCenter), you'll see an <id>.db
file under the directory.
Editor's note: Hofi points out that since macOS 10.10 said SQLite database can be found in the directory returned by shell command
$(getconf DARWIN_USER_DIR)com.apple.notificationcenter/db
, named just db
.
Poking inside, I see tables like app_info
, app_source
, presented_notifications
, etc. Furthermore, the schema includes a clean-up trigger that looks like this:
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;
Using a sqlite3 client, if you do a
select * from app_info;
the first column is the app_id
of your application, the second column is your app's bundleid. Find your application based on the bundleid. Then do a
delete from app_info where app_id = <app_id>
where is the correct app_id you found using your select command above.
What was frustrating was that after doing this, everything stayed around in NotificationCenter (both the center and System Preferences). I had to logout and log back in to see the changes take effect, but luckily, my multiple test apps are now gone ;-)
If anyone knows of a less convoluted way, I'm all ears.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…