我有一个显示文件状态的 Finder 同步扩展 (FSE)。有没有一种方法可以强制 FSE 再次请求 Finder 窗口中当前可见的所有文件/文件夹的状态。
1 回答
Finder Sync Extension (FSE) 具有回调beginObservingDirectoryAtURL
,endObservingDirectoryAtURL
您可以在其中跟踪正在观察的路径(即通过添加/删除路径NSMutableSet
)。此外,每当主应用程序通知 FSE 文件同步状态更新时,FSE 可以将接收到的状态缓存在字典中,其中文件路径映射到文件同步状态。
然后,当 FSE 接收到来自主应用程序刷新所有项目的消息时,FSE 应该检查正在观察哪些路径,然后从主应用程序请求所有在观察集中具有前缀的缓存路径的新状态。此外,FSE 应该删除它的内部缓存,强制它从主应用程序请求新观察到的文件(即当用户打开其他文件夹时)。
一旦 FSE 从主应用程序接收到消息,它就可以调用
[[FIFinderSyncController defaultController] setBadgeIdentifier:syncStatus forURL:url]
并为 URL 设置正确的同步状态图标。
该解决方案假设 FSE 和主应用程序之间的双向通信通道可以通过使用NSDistributedNotificationCenter
或通过CFMessagePort
.
另请记住,可以运行多个 FSE 实例(即来自第三个应用程序的保存对话框)