如何强制finder同步扩展刷新可见项?

时间:2017-11-22 23:17:29

标签: findersync

我有一个Finder Sync Extension(FSE),它显示文件的状态。有没有办法可以强制FSE再次请求Finder窗口中当前可见的所有文件/文件夹的状态。

1 个答案:

答案 0 :(得分:4)

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

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

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

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

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