如何强制查找器同步扩展以刷新可见的物品



我有一个finder同步扩展名(FSE),该扩展名显示了文件的状态。有什么方法我可以强迫FSE再次请求finder窗口中当前可见的所有文件/文件夹请求状态。

查找器同步扩展程序(FSE)具有回调beginObservingDirectoryAtURLendObservingDirectoryAtURL,您可以在其中跟踪观察到的路径(即,通过将/删除路径添加到NSMutableSet)。另外,每当主应用程序通知FSE有关文件同步状态更新时,FSE都可以在词典中缓存收到的状态,其中文件路径映射到文件同步状态。

然后,当FSE从主应用程序收到一条消息以刷新所有项目时,FSE应该检查观察到的路径,然后从主应用程序请求新的状态,以了解所有在观察集合中具有前缀的缓存路径。此外,FSE应删除其内部缓存,强迫它从主应用程序请求新观察到的文件(即用户打开其他文件夹时)。

FSE一旦从主应用收到消息,它可以调用 [[FIFinderSyncController defaultController] setBadgeIdentifier:syncStatus forURL:url],从而为URL设置正确的同步状态图标。

此解决方案假设FSE和主应用之间的双向通信通道可以通过使用NSDistributedNotificationCenter或通过CFMessagePort来实现。

还请记住,可以运行多个FSE实例(即从第三个应用程序保存对话框)

最新更新