10.10 中通知中心 .db 文件的新位置?

问题描述 投票:0回答:4

大家早上好

我有一个小应用程序,它使用

NSNotificationCenter
来安排通知。我在运行时访问它们没有任何问题,并且一切正常。

当我关闭应用程序并重新启动它时,问题就开始了。我似乎无法访问我在第一次运行期间安排的通知。

Answers here 建议在 ~/Library/Application Support/NotificationCenter/ 中有一个 .db 文件,但此文件夹在 OS X 10.10 中不存在(未隐藏,不在任何其他 Application Support 文件夹中)要么)但我可以在我的 10.9 分区上看到它。

有谁知道这个文件现在位于哪里,或者这个功能是否已完全更改并且计划的通知存储在其他地方?

感谢您的任何提示, MDschay

objective-c database macos notifications nsnotificationcenter
4个回答
12
投票

感谢一些外部帮助,我发现可以通过执行以下操作来查看 .db 文件位置:

  1. 打开您的活动监视器
  2. 搜索进程
    usernoted
  3. 转到“打开文件和端口”选项卡

那里列出的文件还包含我正在搜索的 .db 文件,它位于 /private/var/folders 下的 /com.apple.notificationcenter/db 子文件夹中(抱歉没有发布完整路径,但有有些图片对于每台机器或用户来说似乎都是独一无二的)。


4
投票

与 10.14.6 - Mojavae 一样,可以使用以下命令找到它:

lsof -p $(ps aux | grep -m1 usernoted | awk '{ print $2 }')| awk '{ print $NF }' | grep 'db2/db$' | xargs dirname

3
投票

也可以使用此命令找到:

/usr/bin/getconf DARWIN_USER_DIR

0
投票

从 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);
© www.soinside.com 2019 - 2024. All rights reserved.