FinderSync проверяет, выбрано ли расширение

Я разрабатываю FinderSync расширение и у меня есть некоторые проблемы в проверке выбора выбора или выбора / отмены выбора расширения.

Есть ли способ программно проверить, если FinderSync расширение выбрано в System Preferences->Extensions?

Есть ли какие-либо API, чтобы получать уведомления, когда этот выбор изменяется?

Есть ли какой-либо API для выбора / отмены выбора расширения, кроме использования следующего?

system("pluginkit -e use -i com.mycompany.finderExt")

Обратите внимание, что я уже посетил эти страницы:

Как включить расширение FinderSync в Системных настройках в Какао - Цель C

Расширение синхронизации OSX Finder

3 ответа

Решение
pluginkit -m -A -i com.mycompany.finderExt

Если добавочный номер включен, вызов вернется

"+ com.mycompany.finderExt(1)"

Если добавочный номер не включен, вызов вернется

"- com.mycompany.finderExt(1)"

Обратите внимание на знаки плюс и минус, просто проанализируйте возврат, чтобы определить, включено ли расширение.

macOS 10.14 Mojave добавляет два полезных новых метода для управления расширениями:

Приложение, содержащее расширение Finder Sync, может определить, активировал ли пользователь расширение, и может показать пользовательский интерфейс для управления расширениями. Когда приложение снова становится активным, оно может проверить, активировал ли пользователь расширение.

@available(OSX 10.14, *)
open class var isExtensionEnabled: Bool { get }

@available(OSX 10.14, *)
open class func showExtensionManagementInterface()

Расширение FinderSync - это "приложение", точно. но его комплект называется.appex. когда вы включите его в Системных настройках, macOS загрузит его автоматически (вы можете проверить это с помощью приложения Activity или команды ps -ef)

Таким образом, вы можете легко проверить это с помощью следующего кода:

runningApps = [[NSRunningApplication runningApplicationsWithBundleIdentifier:@"your.bundle.id"] retain];
if runningApps.count != 0{
  //your extension was enabled
}
else{
 //your extension was not enabled
}
Другие вопросы по тегам