我有一个Finder同步扩展程序(FSE),它显示文件的状态。有没有一种方法可以强制FSE再次请求Finder窗口中当前可见的所有文件/文件夹的状态。
取景器同步扩展(FSE)有回调beginObservingDirectoryAtURL并endObservingDirectoryAtURL在那里你可以(通过添加/删除路径,即跟踪被观察到的路径NSMutableSet)。此外,每当主应用程序通知FSE有关文件同步状态更新时,FSE都可以将接收到的状态缓存在字典中,在字典中文件路径映射到文件同步状态。
然后,当FSE收到来自主应用程序的消息以刷新所有项目时,FSE应该检查观察到的路径,然后向主应用程序请求新的状态,以获取所有在观察集中具有前缀的缓存路径。此外,FSE应该删除其内部缓存,强制其从主应用程序请求新观察到的文件(即,当用户打开其他文件夹时)。
FSE收到来自主应用程序的消息后,便可以调用
[[FIFinderSyncController defaultController] setBadgeIdentifier:syncStatus forURL:url],从而为URL设置适当的同步状态图标。
此解决方案假定FSE和Main app之间可以使用NSDistributedNotificationCenter或通过来实现双向通信通道CFMessagePort。
另外请记住,可能有多个FSE实例正在运行(即,第3个应用程序的“保存”对话框)
| 归档时间: |
|
| 查看次数: |
219 次 |
| 最近记录: |