Hé, je m'amusais à faire une petite application de cacao et à utiliser la nouvelle API Notification Center de Mountain Lion. Cependant, mon application est maintenant présente dans les paramètres du centre de notification, ainsi que dans l'agenda, les messages, etc.
Comme il ne s’agissait que de moi, je veux qu’il disparaisse de la liste, mais je ne parviens pas à le supprimer. J'ai essayé plusieurs choses, en le glissant, en maintenant la touche Alt + droite enfoncée, etc. Est-ce que quelqu'un sait où le répertoire (probablement un) qui remplit cette liste pourrait être situé?
J'étais coincé dans le même bateau.
Bien que je ne croie pas que la purge des applications du Centre de notifications précédemment enregistrées soit une étape documentée, il existe clairement des outils pour le faire. Voici ce que j'ai découvert. Ces données ne sont pas stockées dans un plist mais plutôt dans une base de données sqlite.
Si vous regardez ~/Library/Application Support/NotificationCenter/<id>
(Dans mon cas, je n'avais qu'un seul répertoire sous NotificationCenter), vous verrez un fichier <id>.db
sous le répertoire.
Note de l'éditeur : Hofi indique que depuis macOS 10.10 ladite base de données SQLite se trouve dans le répertoire renvoyé par la commande Shell$(getconf DARWIN_USER_DIR)com.Apple.notificationcenter/db
, nommé db
.
À l'intérieur, je vois des tables telles que app_info
, app_source
, presented_notifications
, etc. De plus, le schéma inclut un déclencheur de nettoyage qui ressemble à ceci:
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;
Si vous utilisez un client sqlite3,
select * from app_info;
la première colonne est le app_id
de votre application, la deuxième colonne est son bundleid. Trouvez votre application basée sur le bundleid. Alors fais un
delete from app_info where app_id = <app_id>
où est le bon app_id que vous avez trouvé en utilisant la commande select ci-dessus.
Ce qui était frustrant, c’est qu’après cela, tout était resté dans NotificationCenter (le centre et les préférences système). J'ai dû me déconnecter et me reconnecter pour que les modifications prennent effet, mais heureusement, mes multiples applications de test ont maintenant disparu ;-)
Si quelqu'un connaît un chemin moins compliqué, je suis tout ouïe.
Si vous supprimez l'application (vous devrez peut-être aussi vider la corbeille), puis vous vous déconnectez et vous reconnectez, elle est supprimée de la liste.
L’approche suivante, peut-être lourde, semble fonctionner pour moi lorsque je me retrouve dans ce pétrin. Evite de changer AppID/etc au moins;
La réinitialisation/déconnexion n'est pas requise dans cette méthode.
J'ai eu des problèmes avec BetterTouchTool ne disparaissant pas du Notification Center après la désinstallation. Malheureusement, les méthodes mentionnées ici ne m'ont pas fonctionné, mais j'ai fini par comprendre.
Pour ceux qui ont du mal à faire fonctionner cela sous High Sierra:
Dans le terminal, accédez au dossier NotificationCenter:
cd $(getconf DARWIN_USER_DIR)/com.Apple.notificationcenter/
get path en utilisant pwd et copier dans le presse-papier (devrait ressembler à /var/folders/c3/289nmdsd2cz68yd5p47k553w0000gn/0/com.Apple.notificationcenter)
pwd
Il y a peut-être un moyen plus élégant mais cela a fonctionné pour moi. Notez que pour une raison quelconque, la base de données est reconstruite avec le application_id toujours présent dans la table de base de données (appelée app
au lieu de app_id
sur High Sierra btw), cependant l'entrée a disparu du centre de notification.
J'ai simplement renommé le fichier dans le dossier NotificationCenter, puis redémarré. Un nouveau fichier a été créé. Il contient uniquement les applications par défaut.
J'essayais de supprimer une notification, mais dans mon cas, c'était pour un site Web (9to5mac) pour être exact. Je pourrais le voir dans les Préférences Système | Notifications et définissez-le pour être désactivé, mais j'ai continué à recevoir des notifications. J'ai finalement compris. Pour les sites Web, vous devez accéder à Safari, puis à Safari Préférences | Sites Web, puis Notifications, puis recherchez le site Web et définissez-le sur Refuser ou supprimez-le tout simplement. J'ai enlevé 9to5mac ici et une fois que je l'ai fait, il était également parti du centre de notifications général, quel pita! mais au moins il y a un moyen.
De plus, lors de ma recherche, j'ai également ouvert le fichier de base de données de notification avec un navigateur sqlite. Mon application de notification Web ne se trouvait pas. Vous devez donc le supprimer/désactiver dans Safari.
Changer le code dans le projet que vous jouiez avec les notifications des utilisateurs pour appeler
[[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications];
à partir de la méthode de votre délégué app -applicationDidFinishLaunching:
. Cela supprimera toutes les notifications utilisateur du centre de notification utilisateur.
Tadaaa! L'application a été supprimée de manière permanente dans votre centre de notifications en fonction de votre expérience personnelle.
Vous pouvez le faire facilement depuis Xcode.
Ouvrez Organizer
et sélectionnez l'onglet Projects
en haut. Vous verrez une liste de toutes vos applications à gauche. Pour toute application que vous souhaitez supprimer, sélectionnez-la dans le menu de gauche, puis choisissez Delete...
pour le Derived Data
.
Cela conserve toujours les paramètres utilisateur dans le Centre de notifications, ainsi que les notifications elles-mêmes.