ファイルのステータスを表示する Finder Sync Extension (FSE) があります。現在 Finder ウィンドウに表示されているすべてのファイル/フォルダーのステータスを FSE に再度要求させる方法はありますか。
1 に答える
Finder Sync Extension (FSE) にはコールバックがbeginObservingDirectoryAtURL
ありendObservingDirectoryAtURL
、観察されているパスを追跡できる場所があります (つまり、 へのパスの追加/削除によってNSMutableSet
)。また、メイン アプリがファイル同期ステータスの更新について FSE に通知するたびに、FSE は、ファイル パスがファイル同期ステータスにマップされているディクショナリに受信した状態をキャッシュできます。
次に、FSE がメイン アプリからメッセージを受信してすべてのアイテムを更新すると、FSE はどのパスが監視されているかを確認し、監視セットにプレフィックスを持つキャッシュされたすべてのパスの新しいステータスをメイン アプリに要求する必要があります。さらに、FSE は内部キャッシュを削除して、メイン アプリから新たに監視されたファイルを要求するように強制する必要があります (つまり、ユーザーが他のフォルダーを開いたとき)。
FSE はメイン アプリからメッセージを受信すると、 を呼び出して
[[FIFinderSyncController defaultController] setBadgeIdentifier:syncStatus forURL:url]
、URL に適切な同期ステータス アイコンを設定できます。
このソリューションは、FSE とメイン アプリ間の双方向通信チャネルを想定しています。これは、NSDistributedNotificationCenter
または を使用して実現できますCFMessagePort
。
また、複数の FSE インスタンスが実行されている可能性があることにも注意してください (つまり、3 番目のアプリからの保存ダイアログ)。