如何使Finder Sync Extension更改徽章以响应外部事件

时间:2017-07-07 01:08:54

标签: macos synchronization finder

我有一个Finder Sync Extension,它将根据本地数据库的状态在文件上显示徽章。在requestBadgeIdentifierForURL函数中查询此数据库非常简单,但如果我希望更改Finder项目的徽章,如果该数据库的状态已更改(可以通过通过各种机制通知)。文档(https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/Finder.html)似乎暗示这可以通过以下声明实现:

  

您可能还想跟踪这些网址,以便更新它们   每当状态发生变化时都会出现徽章。

我能想象的唯一方法是可能的(而且大多数似乎是错误的)将是:

  • 从另一个知道变化的应用程序调用setBadgeIdentifier:forURL

  • 在我的扩展程序的init函数中启动一个线程,该线程会在收到通知时调用setBadgeIdentifier:forURL

  • 调用一些OS API,提示Finder应通过requestBadgeIdentifierForURL触发扩展。

只有最后一个看起来可行,并且可以通过扩展来管理,通过beginObservingDirectoryAtURL / endObservingDirectoryAtURL回调通知外部资源需要刷新的内容,但我不知道可以做什么机制。

0 个答案:

没有答案