大家早上好
我有一个小应用程序,它使用
NSNotificationCenter
来安排通知。我在运行时访问它们没有任何问题,并且一切正常。
当我关闭应用程序并重新启动它时,问题就开始了。我似乎无法访问我在第一次运行期间安排的通知。
Answers here 建议在 ~/Library/Application Support/NotificationCenter/ 中有一个 .db 文件,但此文件夹在 OS X 10.10 中不存在(未隐藏,不在任何其他 Application Support 文件夹中)要么)但我可以在我的 10.9 分区上看到它。
有谁知道这个文件现在位于哪里,或者这个功能是否已完全更改并且计划的通知存储在其他地方?
感谢您的任何提示, MDschay
感谢一些外部帮助,我发现可以通过执行以下操作来查看 .db 文件位置:
usernoted
那里列出的文件还包含我正在搜索的 .db 文件,它位于 /private/var/folders 下的 /com.apple.notificationcenter/db 子文件夹中(抱歉没有发布完整路径,但有有些图片对于每台机器或用户来说似乎都是独一无二的)。
与 10.14.6 - Mojavae 一样,可以使用以下命令找到它:
lsof -p $(ps aux | grep -m1 usernoted | awk '{ print $2 }')| awk '{ print $NF }' | grep 'db2/db$' | xargs dirname
也可以使用此命令找到:
/usr/bin/getconf DARWIN_USER_DIR
从 macOS 15 Sequoia 开始,数据库现已再次移动至
~/Library/Group Containers/group.com.apple.usernoted/db2/db
。默认情况下,它不会被其他应用程序访问(这显然是移动的目的) - 为了从终端读取它,您需要在隐私和安全设置中授予终端“完整磁盘访问权限”,或者您'尝试进入该目录时会收到权限被拒绝的错误。
(您可能仍然会在 /private/var/folders 路径中看到旧操作系统版本留下的 -shm 和 -wal 文件,但那里没有实际的数据库,所以不要让它让您感到困惑。)
pokio:~ geofft$ sqlite3 -readonly ~/Library/Group\ Containers/group.com.apple.usernoted/db2/db
SQLite version 3.43.2 2023-10-10 13:08:14
Enter ".help" for usage hints.
sqlite> .schema record
CREATE TABLE record (rec_id INTEGER PRIMARY KEY, app_id INTEGER, uuid BLOB, data BLOB, request_date REAL, request_last_date REAL, delivered_date REAL, presented Bool, style INTEGER, snooze_fire_date REAL);