我有一个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回调通知外部资源需要刷新的内容,但我不知道可以做什么机制。