ちょっと私は小さなCocoaアプリケーションを作成し、Mountain Lionで新しい通知センターAPIを使用して遊んでいました。ただし、私のアプリは現在、通知センターの設定、カレンダー、メッセージなどと一緒に存在しています。
それは私が遊んでいただけだったので、リストから削除したいのですが、とにかくそれを削除する方法が見つからないため、いくつかのことを試して、ドラッグして、Alt +右クリックを続けます。そのリストにデータを入力する(おそらくa)plistがどこにあるのか誰か知っていますか?
私は同じ船で行き詰まりました。
登録したアプリケーションをNotification Centerからパージすることは文書化された手順だとは思わないが、それを行うためにいくつかのセットアップが明らかにある。これが私が見つけたものです。このデータはplistではなくsqliteデータベースに保存されます。
_~/Library/Application Support/NotificationCenter/<id>
_(私の場合、NotificationCenterの下にディレクトリが1つしかなかった)を見ると、ディレクトリの下に_<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
_で、2番目の列はアプリケーションのbundleidです。 bundleidに基づいてアプリケーションを見つけます。その後、
_delete from app_info where app_id = <app_id>
_
は、上記の選択コマンドを使用して見つけた正しいapp_idです。
イライラしたのは、これを行った後、すべてがNotificationCenter(センターとシステム環境設定の両方)にとどまったことでした。変更が有効になるのを確認するために、ログアウトしてから再度ログインする必要がありましたが、幸い、複数のテストアプリがなくなってしまいました;-)
複雑でない方法を知っている人がいたら、私はすべて耳にします。
アプリケーションを削除し(ゴミ箱も空にする必要がある場合があります)、ログアウトして再度ログインすると、アプリケーションはリストから削除されます。
次の、おそらく強引なアプローチは、私がこの混乱に入るときにうまくいくようです。 AppIDなどの変更を回避します。少なくとも。
rm -rf ~/Library/Developer/Xcode/DerivedData/*
killall usernoted
killall NotificationCenter
rm ~/Library/Application Support/NotificationCenter/*
この方法では、再起動/ログアウトは必要ありません。
アンインストール後にBetterTouchToolが通知センターから消えないという問題がありました。残念ながら、ここで述べた方法は私にはうまくいきませんでしたが、最終的にはそれを理解しました。
これをHigh Sierraで動作させるのに問題がある人のために:
ターミナルで、NotificationCenterフォルダーに移動します。
cd $(getconf DARWIN_USER_DIR)/com.Apple.notificationcenter/
pwdを使用してパスを取得し、クリップボードにコピーします(/var/folders/c3/289nmdsd2cz68yd5p47k553w0000gn/0/com.Apple.notificationcenterのようになります)
pwd
よりエレガントな方法があるかもしれませんが、これは私にとってはうまくいきました。何らかの理由で、データベースはapplication_idがdb-table(High Sierraではapp_id
ではなくapp
と呼ばれます)にまだ存在する状態で再構築されますが、エントリは通知センター。
NotificationCenterフォルダー内のファイルの名前を変更し、再起動しました。デフォルトのアプリのみが入力された新しいファイルが作成されました。
通知を削除しようとしましたが、私の場合は正確にウェブサイト(9to5mac)でした。システム環境設定で確認できます。通知を無効に設定しましたが、通知を受け取り続けました。ようやくわかりました。 Webサイトの場合は、Safariに移動してから、Safariの設定| Webサイト、次に通知、Webサイトを検索し、それを[拒否]に設定するか、完全に削除します。ここで9to5macを削除しました。削除すると、一般的な通知センターからも削除されました。しかし、少なくとも方法があります。
また、私の検索から、通知DBファイルをsqliteブラウザーで開き、Web通知「アプリ」が見つからなかったため、代わりにSafariで削除/無効にする必要があります。
ユーザー通知で遊んでいたプロジェクトのコードを変更して呼び出します
[[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications];
アプリのデリゲートのメソッドから-applicationDidFinishLaunching:
。これにより、ユーザー通知センターからすべてのユーザー通知が削除されます。
タダ!個人的な経験に基づいて、アプリケーションが通知センターから完全に削除されました。
これはXcodeから簡単に実行できます。
Organizer
を開き、上部にあるProjects
タブを選択します。左側にすべてのアプリケーションのリストが表示されます。削除するアプリケーションについては、左側のメニューからそのアプリケーションを選択し、Delete...
のDerived Data
を選択します。
これにより、通知センターのユーザー設定と通知自体が保持されます。